ByteBufferを使って複数のbyte配列を結合する


プリンターに印刷命令を投げるときにByte型の配列をどうやってつなげていこうか調べていたらByteBufferっていうものがあることを今更知った。

下記サンプルコード


// 印刷する文字列
String printData = "テスト印刷";
ByteBuffer buff = ByteBuffer. allocate(1024);

buff.clear();
// プリンタにはShift_JISで投げる
try {
buff.put( printData .getBytes("SJIS" ));
} catch (UnsupportedEncodingException e ) {
e.printStackTrace();
}
buff.put( new byte [] { 0x1b, 0x1d, 'y', 'S', '0', 0x02 });
buff.put( new byte [] { 0x1b, 0x1d, 'y', 'S', '1', 0x03 });
buff.put( new byte [] { 0x1b, 0x1d, 'y', 'S', '2', 0x06 });
buff.put( new byte [] { 0x1b, 0x1d, 'y', 'D', '1', 0x00 });

allocateで必要な分確保して、あとはバッファにputしていくだけ。
あとAndroidとかでプリンターに印刷命令投げるときはStringに変換文字列を格納してもUnicode扱いになってしまうようなので基本的にbyte変換時に入れる必要があるみたい….(^_^;)
印刷命令とか作るときはある程度コマンドをまとめておかないと見てられない。

カテゴリー: Java

コメントを残す

メールアドレスが公開されることはありません。