<分区>
Possible Duplicate:
Convert a string representation of a hex dump to a byte array using Java?
例如,我有一个字符串“DEADBEEF”。如何将其转换为 byte[] bytes = { 0xDE, 0xAD, 0xBE, 0xEF } ?
<分区>
Possible Duplicate:
Convert a string representation of a hex dump to a byte array using Java?
例如,我有一个字符串“DEADBEEF”。如何将其转换为 byte[] bytes = { 0xDE, 0xAD, 0xBE, 0xEF } ?
最佳答案
遍历每对两个字符并分别转换每对:
byte[] bytes = new byte[str.length()/2];
for( int i = 0; i < str.length(); i+=2 )
bytes[i/2] = ((byte)Character.digit(str.charAt(i),16))<<4)+(byte)Character.digit(str.charAt(i),16);
我还没有测试过这段代码(我的 atm 上没有编译器),但我希望我能理解这个想法。减法/加法只是将“A”转换为数字 10,将“B”转换为 11,等等。位移 <<4 将第一个十六进制数字移动到正确的位置。
编辑:稍微重新考虑一下后,我不确定您问的问题是否正确。您要将“DE”转换为 {0xDE},还是转换为 {0x44,0x45}?后者更有用,前者更像是作业题型。
关于Java - 来自字符串的字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506605/