-1

こんにちは、次の文字列があります

   String msg = "9192939495"

そして、次のバイトを作成したい

   byte[] texttoprint = {(byte) 0x91, (byte) 0x92,(byte) 0x93,(byte) 0x94,(byte) 0x95}

私はこれを試します

public static byte[] hexStringToByteArray(String s) {
    /*String input = "0102FFAB";*/
    byte[] data = new byte[s.length() / 2];

    for( int i = 0; i < s.length(); i+=2)
    {
      data[i/2] = (byte) Integer.decode( "0x" + s.substring( i, i + 2 )  ).byteValue();
    }
    return data;
}

しかし、それは機能しません

また、すべてが問題ないかどうかを確認するために、Eclipse ログで texttoprint を印刷するにはどうすればよいですか?

PS {(byte) 0x91, (byte) 0x92,(byte) 0x93,(byte) 0x94,(byte) 0x95} をプリンターに送信した場合、すべて問題ありませんが、hexStringToByteArray の結果を送信しても何も起こりません

4

1 に答える 1

0
static byte[] decode(final String enc) {
  final long val = Long.parseLong(enc, 16);
  final byte[] raw = new byte[] {
    (byte) ((val & 0xff00000000000000L) >> 56),
    (byte) ((val & 0xff000000000000L) >> 48),
    (byte) ((val & 0xff0000000000L) >> 40),
    (byte) ((val & 0xff00000000L) >> 32),
    (byte) ((val & 0xff000000) >> 24),
    (byte) ((val & 0xff0000) >> 16),
    (byte) ((val & 0xff00) >> 8),
    (byte) (val & 0xff)
  };
  final int n = enc.length() >> 1;
  final byte[] trimmed = new byte[n];
  System.arraycopy(raw, 8 - n, trimmed, 0, n);
  return trimmed;
}

を使用して値を印刷し、Arrays.toStringテキスト形式に変換できます。それらが等しいことを確認するには、 を使用してみてくださいArrays.equals

System.out.println(Arrays.equals(texttoprint, hexStringToByteArray("9192939495"))
    ? "success" : "failure");
于 2012-09-09T16:49:49.590 に答える