c# - 在二进制文件的开头添加字节
问题描述
我有一个十六进制字符串,我将其转换为如下字节:
string hexString = @"504b0304140000000000";
File.WriteAllBytes("0.bin", StringToByteArray(hexString));
//
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();
}
现在我需要将“ 0.bin ”或StringToByteArray(hexString)添加到现有二进制文件“ 1.bin ”的开头
我试图将1.bin附加到0.bin但字节被添加到 1.bin 的末尾而不是开头。
byte[] bytes = StringToByteArray(hexString);
using (var stream = new FileStream("1.bin", FileMode.Append))
{
stream.Write(bytes, 0, bytes.Length);
}
回顾:我需要按此顺序将 0.bin + 1.bin 的字节组合成一个二进制文件。
解决方案
我建议使用临时文件。先写入 0.bin,再写入 1.bin。删除 1.bin 并将您的临时文件重命名为 1.bin。
推荐阅读
- database - 在这种情况下,如何在 ER 模型中转换 (0,N)(0,N)(0,N) 三元关系?
- python - 删除输入()之前插入的“返回空间” - Python 3.6
- microsoft-graph-api - Microsoft Graph API - 日历端点上的“使用资源进行身份验证时出错”400
- css - CSS使用选择器::after为文本添加小边框底部
- c# - 正则表达式作为字符串文字 C# .NET
- css - ionic 3 为每个设备导入字体
- c# - 随机方法返回两个不重复的值
- reactjs - “typeof LogoAvatar”类型的参数不可分配给“ComponentType”类型的参数
- scala - 使用另一列中的键查找 MapType 列中的值
- inno-setup - Inno Setup 如何从 AfterInstall 中排除单个文件