2016-05-14 31 views
-1

私はJavaを使い始めましたが、これは非常に簡単だと確信しています。私はbyte[]に文字列を変換しようとしてきたが、それを行うように見えない。私はそれをプリンタ用に使用しています。Javaの文字列をバイト配列に変換するには?

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

上記正常に動作しますが、私は必要なの0x1b0x2d0x00値を取ると私はもののトンを試してみた

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

のような文字列からそれを挿入することができることです行くことができないようです。

+0

このリンクをチェックしてくださいhttp://stackoverflow.com/questions/18571223/how-to-convert-java-string-into-byte –

答えて

1

はこれを試してみてください:

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

これはnew byte[] {0x1b, 0x2d, 0x00}と同等のバイト配列を生成します。

説明:

  • A JavaのStringは\uxxxxは、Javaコード内のリテラルUnicodeを書く方法です文字
  • のシーケンスです。
  • getBytes(Charset)メソッドは、Charsetを使用して、文字からバイトへのエンコードを行います。
  • Unicode文字\u0000\u00ffは、ISO_8859_1(またはLatin-1)文字セットの0x000xffにまっすぐにマップします。
+0

私はちょうどそれをこのようにして、それを試してみました\ u001b \ u002d \ u0000をテキストとして出力 – user1054513

+0

文字列リテラルを使用しましたか?それは私のコードが必要とするものです!文字列リテラルとして提供されている入力文字列について質問していない場合は、文字列リテラルを例として使用しないでください。 >>誤解を招く<<。 –

+0

はい、私は0x1d、0x21、0x11は、それが{0}であると考えられる配列であると考えていると思うので、配列を私が思うバイトに変換します。 – user1054513

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(あなたの例では持っていたもの)にプッシュします。

吐き出す:

[[email protected], [[email protected], [[email protected]] 
+0

私はそれを試していましたが、私が必要としているのは、それらが変換されずにバイトとして見えるようにするためのものです。 – user1054513

+0

ArrayListは実際には2次元のコレクションなのでです。私たちが持っているのはバイト配列のArrayListです。各配列の最初の要素を取得すると、バイトになります。正しい文字セットを使用して、あなたが望むように見えるようにします。 –

関連する問題