como dice el título, ¿cómo lo hago? Su fácil para convertir de string -> byte -> string binario, Pero ¿cómo puedo convertir de nuevo? A continuación es un ejemplo.
El resultado es :
‘f’ a binario: 01100110
294984

He leído en algún lugar que podría utilizar el Entero.parseInt pero claramente no es el caso 🙁 O estoy haciendo algo mal?

Gracias,
🙂

public class main{
    public static void main(String[] args) {

         String s = "f";
          byte[] bytes = s.getBytes();
          StringBuilder binary = new StringBuilder();
          for (byte b : bytes)
          {
             int val = b;
             for (int i = 0; i < 8; i++)
             {
                binary.append((val & 128) == 0 ? 0 : 1);
                val <<= 1;
             }
             binary.append(' ');
          }
          System.out.println("'" + s + "' to binary: " + binary);

        System.out.println(Integer.parseInt("01100110", 2));
    }
}
  • Desesperadamente necesita aclarar su requisito.
InformationsquelleAutor westberg | 2013-09-03

3 Comentarios

  1. 11

    Puede utilizar Byte.parseByte() con una base de 2:

    byte b = Byte.parseByte(str, 2);

    Usando tu ejemplo:

    System.out.println(Byte.parseByte("01100110", 2));
    102 
    
    • Salvo que el OP (si es que se cree) que quiere convertir a binario cadena de texto.
    • (Aunque en la re-lectura, es imposible decir que lo el OP quiere.)
    • Eso no funciona para valores mayores que 01111111 == 127 como Byte tiene un rango de -128 a 127.
    • A la derecha, pero el OP solo quiere bytes; vuelva a leer la pregunta.
  2. 1

    Se puede analizar en un entero en base 2, y convertir a una matriz de bytes.
    En tu ejemplo tienes 16 bits también puede utilizar corto.

    short a = Short.parseShort(b, 2);
    ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a);
    
    byte[] array = bytes.array();

    Sólo en caso de que usted necesita para una Very Big String.

    String b = "0110100001101001";
    byte[] bval = new BigInteger(b, 2).toByteArray();
    • Salvo que el OP (si es que se cree) que quiere convertir a binario cadena de texto.
  3. 0

    He hecho como este, convierte una cadena s -> byte[] y, a continuación, utiliza Entero.toBinaryString para obtener binaryStringRep. Me he convertido bianryStringRep mediante el uso de Byte.parseByte para obtener el bianryStringRep en bytes y la Cadena(newByte[]) para obtener el byte[] en una Cadena! Espero que ayude a los demás que a mí también! ^^

    public class main{
        public static void main(String[] args) throws UnsupportedEncodingException {
    
             String s = "foo";
              byte[] bytes = s.getBytes();
              byte[] newBytes = new byte[s.getBytes().length];
              for(int i = 0; i < bytes.length; i++){
                  String binaryStringRep = String.format("%8s", Integer.toBinaryString(bytes[i] & 0xFF)).replace(' ', '0');
                  byte newByte = Byte.parseByte(binaryStringRep, 2);
                  newBytes[i] = newByte;
              }
    
            String str = new String(newBytes, "UTF-8");
            System.out.println(str);
        }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here