Java - 来自字符串的字节数组

标签 java arrays byte hex

<分区>

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/

相关文章:

java - 将 Java 移植到 AS3

java - 无论如何,Byte 是作为 Int 实现的吗?

java - Dagger 2 最基本的子组件示例不起作用

java - 如何在矩阵中找到从一点到另一点的逃生路线?

java - java中如何测量一个线程从new到结束到底需要多长时间

java - AtomicInteger 不会同时递增

arrays - 如何使用数组查找/替换选定单元格中的多个值?

javascript - 如果不在数组中,则将项目添加到数组

Java 字节流。读操作有时读不到写入的内容

Python:如何按列遍历列表列表,就好像它是一个普通的二维数组(矩阵)一样?