我有下面的代碼,以十六進制字符串轉換爲字節在Java中:十六進制字節,紅寶石和Java
String s = "longhex";
int len = s.length();
byte[] data = new byte[(len/2)];
for (int i = 0; i < len; i += 2)
{
data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));
}
這是重現它在紅寶石以正確的方式?
s = "longhex"
bytes = []
(0..s.length/2 - 1).step(2).each do |i|
bytes[i/2] = s[i].ord << 4 + s[i + 1].ord
end
我得到的錯誤,當我運行Java代碼,異常在線程「主要」 java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:7 – Mohanraj
這是becase的實際字符串更長'43cfde6a0996a389cd2df5a2c5bd680d44ff77534364446f96621719c4dc3f6b88ff61304ac4856e04403e0d1df446e79592c2b80352ed06c262a3a1f75bae47' –
所以,你想要將十六進制字符串轉換爲十進制字節,我是否正確? – Mohanraj