私のアプリケーションは、ソケットを使用してサーバーに接続し、データを読み取ります。データの長さは最大で 4 文字ですが、これより短い場合もあります。データは CR LF コンボによって追加されますが、これは処理の次のステップには存在したくありません。
4 文字以上は読みたくないので、char[4]
バッファーを用意しています。次に、データが 4 文字未満の場合 (および CR および LF 文字が忍び寄る場合) を考慮すると、次のようになります。
for(int i = 0; i < 4; i++) {
String hexString = Integer.toHexString(buffer[i] | 0x10000).substring(1);
if((hexString == "000d") || (hexString == "000a")) {
buffer[i]='0';
}
}
適切にログを記録すると、ループが期待どおりに動作することがわかりますが、CR (U+000d) および LF (U+000a) 文字は上書きされません。上記のコードは、キャリッジ リターンまたはライン フィードのすべてのインスタンスを '0' に置き換えることを期待していますが、バッファの内容は変更されていないようです。
正直に言うと、とにかくこれは不器用な方法のように感じるので、私の質問は分岐します:
- コードの何が問題になっていますか? 期待どおりに動作するように修正するにはどうすればよいですか?
- これを行うより良い方法はありますか?