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

如何将Java字符串转换为字节数组?,java,arrays,string,Java,Arrays,String,我是Java新手,我相信这很简单。我一直在尝试将字符串转换为字节[]但似乎做不到。我用它做打印机 ArrayList<byte[]> commands = new ArrayList<byte[]>(); commands.add(new byte[] { 0x1b, 0x2d, 0x00 }); 我已经试过很多东西,但似乎都没能成功。试试这个: String str = "\u001b\u002d\u0000"; byte[] bytes = str.getByt

我是Java新手,我相信这很简单。我一直在尝试将字符串转换为
字节[]
但似乎做不到。我用它做打印机

 ArrayList<byte[]> commands = new ArrayList<byte[]>();
 commands.add(new byte[] { 0x1b, 0x2d, 0x00 });
我已经试过很多东西,但似乎都没能成功。

试试这个:

String str = "\u001b\u002d\u0000";
byte[] bytes = str.getBytes(StandardCharsets.ISO_8859_1);
这将生成一个相当于
新字节[]{0x1b,0x2d,0x00}
的字节数组

说明:

  • Java字符串是一个字符序列
  • \uxxx
    是如何在Java代码中编写Unicode文本的
  • getBytes(Charset)
    方法使用提供的
    Charset
    对字节进行字符编码
  • Unicode字符
    \u0000
    \u00ff
    直接映射到ISO_8859_1(或拉丁语-1)字符集中的
    0x00
    0xff

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

      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);
          }
      }
      

      我只是这样试了一下,结果打印出\u001b\u002d\u0000作为文本。您使用了字符串文字吗?这就是我的代码所要求的!如果您没有询问作为字符串文本提供的输入字符串,那么您的问题不应该使用字符串文本作为示例。是的,我相信0x1d,0x21,0x11应该是一个数组,这就是为什么它周围有{},然后将数组转换成字节,我想是的。但如果问题是如何从字符串文本填充任意(二进制)字节数组,那么我的解决方案是更简单的方法。如果您想从其他内容(例如某些特定的字符串格式)填充它,请在问题中明确说明。另外,请明确字符串格式的规范。检查这个链接,我正在尝试,但我需要的是,这些十六进制代码最终以字节的形式结束,而不是转换,这给了我一个不可比较的类型。这是因为ArrayList实际上是一个二维集合。我们有一个字节数组的数组列表。抓取每个数组的第一个元素,它将是字节。使用正确的字符集使其看起来像您想要的那样。
      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);
          }
      }
      
      [B@74a14482, [B@1540e19d, [B@677327b6]