0

我有一个字符串值为“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 编解码器)可以帮助我完成与第一个循环相同的任务?我在运行时动态获取该字符串值。

请建议。

谢谢!

4

2 回答 2

1

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

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

byte[] bytes = BaseEncoding.base16().decode(mystring)
于 2015-03-03T12:20:43.817 回答
0

我会去:

byte[] result = myString.getBytes();

或者

byte[] result = myString.getBytes(Charset.forName("UTF-8"));
于 2015-03-03T11:53:17.593 回答