2

こんにちは私はジェネリックリストをbyte[]に変換する必要がありますが、私のコードは機能しません誰かが私にいくつかのヒントを与えることができますか?

ありがとう!

List<string> lines = inputFile.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList();

byte[] output = new byte[lines.Count];
Encoding enc = Encoding.UTF8;
int i = 0;

foreach (string item in lines)
{
   output[i] = enc.GetBytes(item);
   i++;
}
4

3 に答える 3

5

これがコードです、これがお役に立てば幸いです

byte[] dataAsBytes = lines.SelectMany(s => Text.Encoding.UTF8.GetBytes(s))
  .ToArray();
于 2012-07-03T10:15:55.130 に答える
4

ファイルのすべての内容をエンコードする1つの大きな配列は必要ないと想定しています。その場合は、最初に行に分割する必要がまったくないためです。それはあなたの仕事を難しくするだけです。与えられたものとして:

次のように、バイト配列の配列を使用する必要があるバイト配列を使用しています。

byte[][] output = new byte[lines.Count][];

つまり、output2つの次元が必要です。行と同じ数の項目があり、それらの各項目自体は、UTF-8でその行の内容をエンコードするために必要な数のバイトを持つ配列です。

これに頭を悩ませた後、よりクリーンな構文のためにLINQを使用することも検討してください。

var lines = /* ... */
var output = lines.Select(l => Encoding.UTF8.GetBytes(l)).ToArray();
于 2012-07-03T10:16:58.033 に答える
0
var bytes = File
    .ReadLines(@"path")
    .Select(line => Encoding.UTF8.GetBytes(line));

foreach(var lineBytes in bytes)
{
    //DoStuffz
}
于 2012-07-03T10:19:32.460 に答える