我可能忽略了一些愚蠢的东西,但我从来没有必要在代码中处理二进制文件,并认为在加密程序中练习它是个好主意, 。长话短说,我能够将字符串转换为二进制(以字符串的形式),但无法弄清楚如何做相反的操作。将二进制字符串解析为文本/字符
现在,我有这样的事情:
public static String bytesToString(String bytes){
int i = bytes.length()/8;
int pos = 0;
String result = "";
for(int j=0; j<i; j++){
String temp = bytes.substring(pos,pos+8);
byte b = (byte) Integer.parseInt(temp);
result = result + Byte.toString(b);
pos++;
}
System.out.println("Result: " + result);
return result;
}
我认为字节被解析为面值数字。我错过了什么? 编辑:为了澄清,我以前已经将一串文本解析成位并将它们写入一个字符串。我想将这个字符串拆分为字节并将它们解析为字母。这将需要“011010000110010101111001”并返回“嘿”。
能否请您发布的什么是你想达到一个例子 – 2011-06-03 03:03:48
我**强烈推荐**中存储未加密的字符串作为? ''java.lang.String's和“binary”字符串(例如字符串的二进制表示形式)作为byte []'。将3个字节'01101000 01100101 01111001'存储在一个字符串中作为'“011010000110010101111001”'而不是'“嘿“'占用了**十六倍的空间(因为Java代表了str在内部作为UTF-16,意味着每个字符都存储为2个字节)。更糟糕的是,代码的**含义是混浊的(_这是一个“真实”字符串或“字节”字符串?),并且**性能会受到影响。** – 2011-06-03 03:41:53