如何将Java字符串转换为字节数组?

时间:2016-05-14 05:55:33

标签: java arrays string

我是Java的新手,我确信这很简单。我一直试图将字符串转换为byte[]似乎无法做到。我用它来打印机。

 ArrayList<byte[]> commands = new ArrayList<byte[]>();
 commands.add(new byte[] { 0x1b, 0x2d, 0x00 });

以上工作正常,但我需要的是能够获取0x1b0x2d0x00值并从字符串中插入

 String hexcode = "0x1b, 0x2d, 0x00";
 commands.add(new byte[] { hexcode });

我已经尝试了很多东西似乎无法让它去。

2 个答案:

答案 0 :(得分:1)

试试这个:

String str = "\u001b\u002d\u0000";
byte[] bytes = str.getBytes(StandardCharsets.ISO_8859_1);

这会产生一个等于new byte[] {0x1b, 0x2d, 0x00}的字节数组。

说明:

  • Java String是一系列字符
  • \uxxxx是您在Java代码中编写Unicode文字的方式。
  • getBytes(Charset)方法使用提供的Charset执行字符到字节编码。
  • Unicode字符\u0000\u00ff直接映射到ISO_8859_1(或Latin-1)字符集中的0x000xff

答案 1 :(得分:0)

试试这个。非常简单的方法:

import java.util.ArrayList;

public class HelloWorld {

    public static void main(String[] args) {
        String hexcode = "0x1b, 0x2d, 0x00";
        String[] stringArray = hexcode.split(",");

        ArrayList<byte[]> byteArray = new ArrayList<byte[]>();

        for (int x = 0; x < stringArray.length; x++) {
            byteArray.add(stringArray[x].getBytes());
        }
        System.out.println(byteArray);
    }
}

我们只是拆分第一个字符串并创建一个字符串数组。然后我们循环遍历它,为每个元素生成字节,将它们推入ArrayList(在你的例子中)。

吐出:

[B@74a14482, [B@1540e19d, [B@677327b6]