1. ホーム
  2. java

[解決済み] 0x0A と 0x0D の相違点

2022-01-30 07:46:32

質問事項

ブルートゥースについて勉強していて、接続中に入力ストリームを聞き続けるコードを書こうとして、次のようなコード・スニペットに出会いました。

int data = mmInStream.read();
   if(data == 0x0A) { 
                } else if(data == 0x0D) {
                    buffer = new byte[arr_byte.size()];
                    for(int i = 0 ; i < arr_byte.size() ; i++) {
                        buffer[i] = arr_byte.get(i).byteValue();
                    }
                    // Send the obtained bytes to the UI Activity
                    mHandler.obtainMessage(BluetoothState.MESSAGE_READ
                            , buffer.length, -1, buffer).sendToTarget();
                    arr_byte = new ArrayList<Integer>();
                } else {
                    arr_byte.add(data);
                }

0x0A と 0x0D の違いは何ですか?また、このコードについて簡単な説明をしてください。 あなたの意見を聞かせてください。

どのように解決するのですか?

を開始する値 0x は16進数です。 0x0A\n 改行文字と 0x0D\r を返す文字です。変換の仕方はこちらをご覧ください ここで を使用するか、または 変換表

の値に応じて、異なるロジックブロックを実行します。 data から読み込まれます。 mmInStream

簡単に説明する。

  • としたとき data0x0A は、改行文字 \n に追加されることはなく、スキップされます。 arr_byte
  • を指定すると data0x0D の場合、リターン文字 \r からバッファを構築します。 arr_byte に送信し、そのバッファをUI Activity
  • を実行すると data が他の文字である場合、その文字は arr_byte

お役に立てれば幸いです。