0

C# を使用して、Windows でプレーン テキスト ファイル (.txt) を base16 エンコーディングのバイト配列に読み込もうとしています。これは私が持っているものです:

FileStream fs = null;
try
{
    fs = File.OpenRead(filePath);
    byte[] fileInBytes = new byte[fs.Length];
    fs.Read(fileInBytes, 0, Convert.ToInt32(fs.Length));
    return fileInBytes;
}
finally
{
    if (fs != null)
    {
        fs.Close();
        fs.Dispose();
    }
}

この内容の txt ファイルを読み取ると0123456789ABCDEF 、128 ビット (または 16 バイト) の配列が得られますが、必要なのは 64 ビット (または 8 バイト) の配列です。これどうやってするの?

4

1 に答える 1

2

2 バイトを文字列として読み取り、16 進数の指定を使用して解析できます。例:

var str = "0123456789ABCDEF";
var ms = new MemoryStream(Encoding.ASCII.GetBytes(str));
var br = new BinaryReader(ms);
var by = new List<byte>();
while (ms.Position < ms.Length) {
    by.Add(byte.Parse(Encoding.ASCII.GetString(br.ReadBytes(2)), NumberStyles.HexNumber));
}
return by;

または、あなたの場合、これらの行に沿ったもの:

        FileStream fs = null;
        try {
            fs = File.OpenRead(filePath);
            using (var br = new BinaryReader(fs)) {
                var by = new List<byte>();
                while (fs.Position < fs.Length) {
                    by.Add(byte.Parse(Encoding.ASCII.GetString(br.ReadBytes(2)), NumberStyles.HexNumber));
                }
                var x = by.ToArray();
            }
        } finally {
            if (fs != null) {
                fs.Close();
                fs.Dispose();
            }
        }
于 2013-10-11T17:01:38.177 に答える