将字符串转换为字节数组(0x) - Java

时间:2015-03-03 11:46:14

标签: java apache hex bytearray apache-commons-codec

我的字符串值为" 0x0601930600058000050001",需要转换为字节数组

byte[] codes1 = new byte[]{(byte)0x06,(byte)0x01,(byte)0x93,(byte)0x06,(byte)0x00,(byte)0x05,(byte)0x80,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x01};

    for(byte b : codes1){
        System.out.println(b);
    }
System.out.println("======================");

byte[] cod = "0x0601930600058000050001".getBytes();
for(byte b : cod){
        System.out.println(b);
    }

两种结果都不同,如何使它们相同。第一个循环输出是我所期望的实际输出,第二个循环是错误的输出。

如果你看到,我正在拆分每个2字节并输入强制转换并使用0x来获取实际值。

问题:是否有任何预定义的方法(Apache commons codec)可以帮助我完成与第一个循环相同的任务?我在运行时动态获取String值。

请建议。

谢谢!

2 个答案:

答案 0 :(得分:1)

您的字符串是字节数组的十六进制表示形式!

使用番石榴,你可以这样做:

byte[] bytes = BaseEncoding.base16().decode(mystring)

答案 1 :(得分:0)

我会选择:

byte[] result = myString.getBytes();

byte[] result = myString.getBytes(Charset.forName("UTF-8"));