将字节写入文件

Joh*_*Doe 81 c# string hex byte

我有一个十六进制字符串(例如0CFE9E69271557822FE715A8B3E564BE),我想将其作为字节写入文件.例如,

Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
00000000   0C FE 9E 69 27 15 57 82  2F E7 15 A8 B3 E5 64 BE   .þži'.W‚/ç.¨³åd¾
Run Code Online (Sandbox Code Playgroud)

如何使用.NET和C#实现这一目标?

小智 151

如果我理解正确,这应该可以解决问题.using System.IO如果您还没有添加,则需要在文件顶部添加.

public bool ByteArrayToFile(string fileName, byte[] byteArray)
{
    try
    {
        using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
        {
            fs.Write(byteArray, 0, byteArray.Length);
            return true;
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception caught in process: {0}", ex);
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)


Don*_*nut 72

最简单的方法是将十六进制字符串转换为字节数组并使用该File.WriteAllBytes方法.

使用这个问题StringToByteArray()方法,你会做这样的事情:

string hexString = "0CFE9E69271557822FE715A8B3E564BE";

File.WriteAllBytes("output.dat", StringToByteArray(hexString));
Run Code Online (Sandbox Code Playgroud)

StringToByteArray方法包括在下面:

public static byte[] StringToByteArray(string hex) {
    return Enumerable.Range(0, hex.Length)
                     .Where(x => x % 2 == 0)
                     .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
                     .ToArray();
}
Run Code Online (Sandbox Code Playgroud)