私は入力としてバイト配列を持っています。これは、標準準拠のUTF8 HTMLのバイナリ表現でなければなりません。それはそうですが、大部分の時間だけです。場合によっては、埋め込みヌル(\x0
文字またはNUL
)も含まれます。これは私のコントロール下ではありません。このバイト配列を文字列に変換する必要があります。ゼロを含むバイトバッファを文字列に変換する方法
はこれまでにしようとしました:
明らか- を、それが最初
NUL
Encoding.UTF8.GetString
を打つ上で停止するようStreamReader
またはTextReader
を使用することはできません。どちらか動作しません - も最初NUL
うまくいったものの、やや不愉快なもの:
mynewarray = myoldarray.Where(x => x!=0).ToArray();
var output = Encoding.UTF8.GetString(mynewarray);
NUL
の文字をスキップして新しいバイト配列を作成する場合を除いてこれを行うもっとエレガントな方法がありますか?バイト配列は2〜4Mbよりもかなり大きくなる可能性があります... MSDNではStringsに実際に埋め込まれたNUL
が含まれているかもしれないと伝えていますが、そのような文字列を処理するにはどのような方法が最適かはわかりません。 (ない
実は、 'UTF8.GetString(バイト[])は'ゼロで停止してはいけません。..しかしその後、 ''\ 0''を含む文字列があります –
バッファサイズよりはるかに小さい私のアサーションのlengthプロパティに頼っていました。私は二重チェックする必要があります。 – jdehaan
拡張文字があれば、文字列の長さはバッファサイズより小さくなります。 – BlueM