我可能忽略了一些愚蠢的東西,但我從來沒有必要在代碼中處理二進制文件,並認爲在加密程序中練習它是個好主意, 。長話短說,我能夠將字符串轉換爲二進制(以字符串的形式),但無法弄清楚如何做相反的操作。將二進制字符串解析爲文本/字符
現在,我有這樣的事情:
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