バイト配列から null で終了する文字列を読み込もうとしています。関数のパラメータはエンコーディングです。
string ReadString(Encoding encoding)
たとえば、次のエンコーディングの「foo」は次のとおりです。
UTF-32: 66 00 00 00 6f 00 00 00 6f 00 00 00
UTF-8: 66 6f 6f
UTF-7: 66 6f 6f 2b 41 41 41 2d
すべてのバイトを配列にコピーし (ヌル ターミネータまで読み取る)、その配列を に渡しencoding.GetString()
た場合、文字列が UTF-32 でエンコードされている場合、アルゴリズムは 2 番目のバイトの後に「ヌル ターミネータ」に到達するため、機能しません。 .
だから私は二重の質問があります.ヌルターミネータはエンコーディングの一部ですか? そうでない場合、文字列を1文字ずつデコードし、次のバイトでヌルターミネータをチェックするにはどうすればよいですか?
前もって感謝します
(提案も大歓迎です)
編集:
「foo」が null で終了し、utf-32 でエンコードされている場合、どちらになりますか?:
1. 66 00 00 00 6f 00 00 00 6f 00 00 00 00
2. 66 00 00 00 6f 00 00 00 6f 00 00 00 00 00 00 00