- PR -

エスケープや改行コード

1
投稿者投稿内容
BAY
会議室デビュー日: 2006/07/11
投稿数: 3
投稿日時: 2006-07-11 12:16
はじめましてjavaの初心者です

あるデバイスとTCP/IP通信を行う対向側としての
javaプログラムを作成しております。

デバイスとの取り決めで通信フォーマットを以下のように

1.開始文字:1バイト (エスケープ:0x1b)
2.データ:任意長
3.チェックディジット:2バイト
4.終了文字:1バイト (リターン:0x0d)

取り決めしましたが
1.と4.の開始と終了の文字列をソケットのバッファに出力する
方法がわかりません。

変換すれば良いのはわかるのですが
いい方法をご教授いただければ幸いです。

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-07-11 13:17
何についてわからないのか、よくわかりませんが、
要は0x1bをStringにしたいってことですか?
BAY
会議室デビュー日: 2006/07/11
投稿数: 3
投稿日時: 2006-07-11 13:36
返信ありがとうございます

>何についてわからないのか、よくわかりませんが、
>要は0x1bをStringにしたいってことですか?
そうですね16進とStringの相互変換の方法が知りたいです
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-07-11 13:39
"¥u001b"
"¥u0x0d"
で文字列になります。¥は本当は全角で書いていますが半角です。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2006-07-11 14:05
Stringにする必要あるのでしょうか?

コード:
os = socket.getOutputStream();
...
os.write(0x1b);
...
os.write(0x0d);



とか、

コード:
byte[] buffer = ...
buffer[0] = 0x1b;
...
buffer[n++] = 0x0d;
os.write(buffer, 0, n);



で良いのでは。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-07-12 22:32
文字列が文字コードというもので管理されているのだ
というプログラムの基礎概念が抜けているのでしょうか…。
簡素なプログラムであれば文字コードというものを
意識しなくてもプログラムできてしまいますものね。

文字が最終的にバイト列になって送信されることを
考えればスフレさん案でしょう。
1

スキルアップ/キャリアアップ(JOB@IT)