Запись байтов в файл



у меня есть шестнадцатеричная строка (например 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¾


Как я могу сделать это с помощью .NET и C#?

617   4  

4 ответов:

Если я правильно вас понял, это должно сделать трюк. Вам нужно будет добавить 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;
    }
}

самый простой способ-преобразовать шестнадцатеричную строку в массив байтов и использовать File.WriteAllBytes метод.

С помощью StringToByteArray() метод этот вопрос, вы бы сделали что-то вроде этого:

string hexString = "0CFE9E69271557822FE715A8B3E564BE";

File.WriteAllBytes("output.dat", StringToByteArray(hexString));

The 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();
}
        private byte[] Hex2Bin(string hex) {
        if ((hex == null) || (hex.Length < 1)) {
            return new byte[0];
        }
        int num = hex.Length / 2;
        byte[] buffer = new byte[num];
        num *= 2;
        for (int i = 0; i < num; i++) {
            int num3 = int.Parse(hex.Substring(i, 2), NumberStyles.HexNumber);
            buffer[i / 2] = (byte)num3;
            i++;
        }
        return buffer;
    }

        private string Bin2Hex(byte[] binary) {
        StringBuilder builder = new StringBuilder();
        foreach (byte num in binary) {
            if (num > 15) {
                builder.AppendFormat("{0:X}", num);
            } else {
                builder.AppendFormat("0{0:X}", num);/////// 大于 15 就多加个 0
            }
        }
        return builder.ToString();
    }

преобразовать шестнадцатеричную строку в байтовый массив.

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();
}

фото: Джаред Пар

и затем использовать WriteAllBytes для записи в файловую систему.

Comments

    Ничего не найдено.