如何将二进制字符串转换为byte[]?

[code="java"]byte[] b = new byte[fis.available()];
StringBuilder str = new StringBuilder();
fis.read(b);
for(byte bs:b){
str.append(Integer.toBinaryString(bs));//转换为二进制
}
fis.close();[/code]
我通过这种方式将一个byte[]转换为二进制的字符串。里面全是0和1字符。现怎么将这种二进制字符串转换为byte[]数组?我知道有其它将byte[]和字符串之间互相转换的方法。但我现在只求这种二进制字符串的转换方法。拜托各位了。。

6个回答

少年,强烈建议把让你做这个的人干掉!
下面就是那个变态要的

public static byte[] byte2String(String binaryByteString){
//假设binaryByte 是01,10,011,00以,分隔的格式的字符串
String[] binaryStr=binaryByteString.split(",");
byte[] byteArray=new byte[binaryStr.length];
for(int i=0;i<byteArray.length;i++){
byteArray[i]=(byte)parse(binaryStr[i]);
}
return byteArray;
}
public static int parse(String str){
//32位 为负数
if(32==str.length()){
str="-"+str.substring(1);
return -(Integer.parseInt(str, 2)+Integer.MAX_VALUE+1);
}
return Integer.parseInt(str, 2);
}

你这样转后str 就是010101111这样的字符串
这个没有分隔是不能逆转回去的啊

上面说的对,你要每个byte一个二进制字符串才可能转回去

[code]
String input = "1001010,1101010,11";
String[] inputs = input.split(",");
byte[] outputs = new byte[inputs.length];
for (int i = 0; i < outputs.length; i++) {
outputs[i] = Byte.parseByte(inputs[i],2);
System.out.println(outputs[i]);
}
[/code]

不知道你转这些需要做什么,对于认知上来说,其实它就是01010的二进制,只是显示上的区别而已

webservice的协议可以使用http、xml的格式的数据呀
而且String 直接由getBytes()这个方法

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!