How to convert a binary representation of a string into byte in Java?

后端 未结 3 1980
名媛妹妹
名媛妹妹 2021-01-20 17:11

as the title says, how do I do it? Its easy to convert from string -> byte -> string binary, But how do I convert back? Below is a example. The output is : \'f\' to binary:

相关标签:
3条回答
  • 2021-01-20 17:33

    You can use Byte.parseByte() with a radix of 2:

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

    Using your example:

    System.out.println(Byte.parseByte("01100110", 2));
    
    102
    
    0 讨论(0)
  • 2021-01-20 17:42

    You can parse it to an integer in base 2, and convert to a byte array. In your example you've got 16 bits you can also use short.

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

    Just in case if you need it for a Very Big String.

    String b = "0110100001101001";
    byte[] bval = new BigInteger(b, 2).toByteArray();
    
    0 讨论(0)
  • 2021-01-20 17:42

    I made like this, converted a string s -> byte[] and then used Integer.toBinaryString to get binaryStringRep. I converted bianryStringRep by using Byte.parseByte to get the bianryStringRep into byte and the String(newByte[]) to get the byte[] into a String! Hope it helps others then me aswell! ^^

    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);
        }
    }
    
    0 讨论(0)
提交回复
热议问题