【问题标题】:Convert String to byte array (0x) - Java将字符串转换为字节数组(0x)-Java
【发布时间】:2015-03-03 11:46:14
【问题描述】:

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

请提出建议。

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    【解决方案2】:

    我会去:

    byte[] result = myString.getBytes();
    

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

    【讨论】:

    • 这没有得到实际的预期结果:byte[] cod = "0x0601930600058000050001".getBytes(Charset.forName("UTF-8")); for(byte b : cod){ System.out.println(b); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2013-12-19
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多