Java - 字符串中的字节数组

int*_*_32 3 java arrays hex byte

可能重复:
使用Java将十六进制转储的字符串表示形式转换为字节数组?

例如,我有一个字符串"DEADBEEF".如何将其转换为byte [] bytes = {0xDE,0xAD,0xBE,0xEF}?

tsk*_*zzy 6

循环遍历每对两个字符并分别转换每对字符:

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);
Run Code Online (Sandbox Code Playgroud)

我没有测试过这段代码(我没有编译器和我一起)但是我希望我能通过这个想法.减法/加法简单地将'A'转换为数字10,将'B'转换为11,等等.位移<< 4将第一个十六进制数字移动到正确的位置.

编辑:重新思考一下后,我不确定你是否在问正确的问题.您想将"DE"转换为{0xDE},还是转换为{0x44,0x45}?后者更有用,前者更像是家庭作业问题类型的问题.