Hola quiero convertir un entero largo a binario pero el problema es que quiero un resultado binario fijo de 16 bits después de la conversión, como si convirtiera 2 a 16 bits binarios, debería darme 0000000000000010, ¿cómo puedo ayudarme alguien?¿Cómo convertir una cadena binaria de 16 bits de longitud fija a una de longitud fija?
Respuesta
Binario es una representación y no un formato para convertir un número entero. Por ejemplo, si usted tiene un entero:
int i = 2;
La representación binaria será 00000010. Java ha firmado sólo enteros, por lo que este link será útil.
más probable es que lo que quiere es Integer.toBinaryString()
, combinado con algo para asegurar que se obtiene exactamente 16 lugares:
int val = 2;
String bin = Integer.toBinaryString(0x10000 | val).substring(1);
La idea aquí es conseguir que el relleno de ceros por poner un 1 en el lugar 17 de su valor, y luego use String.substring()
para cortar el primer 1 que esto crea, por lo tanto, siempre le dará exactamente 16 dígitos binarios. (Esto funciona, por supuesto, solo cuando está seguro de que la entrada es un número de 16 bits).
¡Buen truco! +1! – polygenelubricants
Mi mal. Vi 16 bits y estaba pensando en abreviar. ¿Acepte mi disculpa? FYI, val corto = -1; String bin = Integer.toBinaryString (0x10000 | val) .substring (1); es lo que no funcionará. –
NP. Sí, eso definitivamente no funcionará si comienzas con un corto negativo. – uckelman
Integer.toBinaryString
convertirá un int
en su representación binaria como una cadena.
No le da ceros a la izquierda, por lo que si realmente necesita la cuerda para tener esos y ser de 16 bits, puede agregarlos usted mismo.
Usted debe saber cómo hacerlo.
tenga en cuenta que un int
es en realidad 32 bits en Java. También debería saber cómo funciona el complemento a dos. La representación binaria de -1
, por ejemplo, es 32 1
s.
Supongo que quiere una salida de cadena de longitud fija (16). Esto es lo que el código se vería así:
String binarized = Integer.toBinaryString(i);
int len = binarized.length();
String sixteenZeroes = "00000000000000000";
if (len < 16)
binarized = sixteenZeroes.subString(0, 16-len).concat(binarized);
else
binarized = binarized.subString(len - 16);
return binarized;
Advertencia: No compilar o bien puede hacerlo, por lo que asegurarse de que ningún error es allí :)
Según tengo entendido, no ejecutar el código está bien, siempre y cuando demuestres que es correcto. – msandiford
si desea que la representación binaria de un largo, a continuación, hay un método en el largo objet hacerlo:
String Long.toString(long i, int radix);
con una base de 2, usted debe tener una representación binaria.
respecto
Guillaume
en términos de un algoritmo para convertir números Base10 a binario, yo personalmente creo que la siguiente es bastante sencillo:
char[] array;
for (i; i < 16; i++)
{
if (yourNumber % 2 == 0)
array[16-i] = '0';
else if (yourNumber % 2 == 1)
array[16-i] = '1';
yourNumber = yourNumber/2;
}
A continuación, puede convertir su matriz de caracteres en una cadena Si te gusta.
En contraste con muchas sugerencias aquí: Integer.toBinaryString
, no funciona para un 16 bit (un corto) y no imprimirá ceros a la izquierda. La razón es que (como su nombre indica) esto solo funcionará para enteros. Y para números negativos, la representación del bit cambiará (el primer bit indica un número negativo).Los dos números a continuación representan el mismo número en abreviado e int. Entonces, si quiere representar los bits crudos que ha recibido (esta es la aplicación general de su problema), esta función generará resultados extraños.
decimal: -3
short: 1111 1111 1111 1101
int: 1111 1111 1111 1111 1111 1111 1111 1101
EDIT: Se ha cambiado el número anterior
Por lo tanto no se puede emitir el resumen, si usted está interesado en el bit.
Java no facilita la aplicación a corto, por lo que tendrá que proporcionar su propia. Algo como esto (el tamaño es el número de bits):
int displayMask = 1 << (size - 1);
StringBuffer buf = new StringBuffer(size);
for (int c = 1; c <= size; c++)
{
buf.append((value & displayMask) == 0 ? '0' : '1');
value <<= 1;
}
Esos dos no son los mismos números. ¿De qué estás hablando? – polygenelubricants
Tiene razón, usé la representación de bit incorrecta. Actualizaré los números. – Thirler
No necesita todo eso. 'decimal corto = -3; String s = Integer.toBinaryString (0xFFFF y decimal); 'producirá el correcto' 1111111111111101'. –
tuve que hacerlo por un número de 32 bits y terminó con:
String stringWord = Long.toBinaryString(word);
while (stringWord.length() < 32) // ensure that length of word is 32
stringWord = "0" + stringWord;
- 1. ¿Cómo declarar una cadena de longitud fija en VB.NET?
- 2. División de cadena por longitud fija
- 3. Dividir una cadena de JavaScript en piezas de longitud fija
- 4. enteros grandes con longitud fija
- 5. Django: CharField con longitud fija, ¿cómo?
- 6. búfer circular de longitud fija en haskell
- 7. Python Tipo de datos para una FIFO de longitud fija
- 8. Cómo convertir un entero a cadena hexagonal de longitud fija en C#?
- 9. la conversión de un número binario con una longitud fija
- 10. Escribir una cadena en una matriz de bytes de longitud fija en C#
- 11. MYSQL VARCHAR o CHAR para cadena de longitud fija
- 12. Código hash numérico de longitud fija de cadena de longitud variable en C#
- 13. cómo analizar una lista o una cadena en trozos de longitud fija
- 14. Biblioteca .NET para archivos de texto de longitud fija
- 15. Impresión de datos en bruto a una salida hexadecimal de longitud fija
- 16. ¿Usando Scrum en proyectos de longitud fija/precio fijo?
- 17. Almacenar objetos de Python en una lista de Python vs. una matriz Numpy de longitud fija
- 18. ¿Cómo creo una matriz mutable de longitud fija de objetos de Python en Cython?
- 19. MySQL de longitud fija y tipos de datos de longitud variable
- 20. ¿Cómo generar una lista aleatoria de longitud fija de valores del rango dado?
- 21. ¿Cómo generar un identificador único de una longitud fija en Java?
- 22. Relleno un número fijo con ceros a la izquierda hasta una longitud fija
- 23. Longitud de datos frente a CRC Longitud
- 24. Cómo probar de manera efectiva un analizador de archivos planos de longitud fija utilizando MSpec?
- 25. Programación de llamadas a una tasa fija
- 26. Cómo convertir un entero a una cadena de bytes de longitud variable?
- 27. Cómo calcular (x, y) para una longitud de arco fija lejos de un punto en una circunferencia
- 28. Imagemagick: Convertir a altura fija, ancho proporcional
- 29. Verifica la longitud de la secuencia binaria?
- 30. Javascript recortar una cadena a la longitud
¿Es un 'string' de 1s y 0s que quieres como salida? – uckelman
16 bits no es un número entero muy largo ... – Thilo
solo necesita enteros no negativos ¿no? – Thilo