我試圖將特定字符串轉換爲字節[]。將特定字符串轉換爲字節[]
的字符串看起來像: 55 55 F5 FF FF
,這裏是我寫它的方法,希望有人能告訴我什麼是錯的或有更好的解決方案。
public static byte[] stringToByte(String text) {
//byte[] length ==> String (length+1)/3
byte raw[] = new byte[(text.length() + 1)/3];
int j = 0;
for (int i = 0; i < text.length(); i += 2) {
String h = "";
h += text.charAt(i);
h += text.charAt(i + 1);
i++;
raw[j] = Byte.valueOf(h);
j++;
}
return raw;
}
問題是它的工作,直到涉及到F5。
我需要的值相同的字節[],如果我用
byte raw[] = {(byte) 0x55, (byte) 0x55, (byte) 0x5F,(byte) 0xFF,(byte) 0xFF};
對不起,它的錯誤。當我使用「raw = text.getBytes();」我得到了一個有14個職位的數組,但我需要一個5個像我的問題中的最後一個代碼塊。 – Jay
如果您查看「Byte.valueOF」的文檔,它會指向'parseByte',其中指出「字符串中的字符必須全部爲十進制數字,但第一個字符可能是ASCII減號」 。這就是爲什麼當你給它一個「F」時它會爆炸。 –
哦,現在我明白了 - 我認爲這個適合:http://stackoverflow.com/questions/140131/convert-a-string-representation-of-a-hex-dump-to-a-byte-array-using -java – birryree