C# 替换文件中的字节
我试图用其他特定字节替换文件中的某些字节,但二进制编写器替换太多字节时出现问题。我的代码有什么问题C# 替换文件中的字节,c#,hex,binarywriter,C#,Hex,Binarywriter,我试图用其他特定字节替换文件中的某些字节,但二进制编写器替换太多字节时出现问题。我的代码有什么问题 using (BinaryWriter bw = new BinaryWriter(File.Open(fileName, FileMode.Open))) { bw.BaseStream.Position = 0x3; bw.Write(0x50); } 本应将字母“E”(十六进制0x45)更改为字母“p”,但却更改了该字节和另外3个字节;从“45
using (BinaryWriter bw =
new BinaryWriter(File.Open(fileName,
FileMode.Open)))
{
bw.BaseStream.Position = 0x3;
bw.Write(0x50);
}
本应将字母“E”(十六进制0x45)更改为字母“p”,但却更改了该字节和另外3个字节;从“45 30 31 FF”到“50 00”。我想保留“30 31 FF”,只将“45”改为“50”。因为方法
写入
实际写入int
(4字节)。您应该将值转换为字节
类型<代码>bw.Write((字节)0x50)代码>因为方法写入实际写入int
(4字节)。您应该将值转换为字节
类型<代码>bw.Write((字节)0x50)代码>基本上,您不希望或不需要为此使用BinaryWriter
。您正在呼叫,其行为完全符合记录
只需使用FileStream
编写一个字节:
using (var stream = File.Open(fileName))
{
stream.Position = 3;
stream.WriteByte(0x50);
}
更简单、更易于阅读(显然只需编写一个字节),并且可以执行您想要的操作。基本上您不希望或不需要为此使用BinaryWriter
。您正在呼叫,其行为完全符合记录
只需使用FileStream
编写一个字节:
using (var stream = File.Open(fileName))
{
stream.Position = 3;
stream.WriteByte(0x50);
}
更简单、更容易阅读(显然只写了一个字节),并且做了您想做的事情。您可能想查看这篇关于简短符号的文章:您可能想查看这篇关于简短符号的文章: