替换文件中的字节

Replacing byte in file

我正在尝试用其他一些特定字节替换文件中的某些字节,但我的二进制编写器替换了太多字节时出现问题。我的代码有什么问题?

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 00 00”。我想保留“30 31 FF”,只将“45”改为“50”。

因为方法Write实际上写的是int(4字节)。您应该将您的值转换为 byte 类型。 bw.Write((byte)0x50);

基本上您不想或不需要为此使用 BinaryWriter。您正在调用 BinaryWriter.Write(int),它的行为与记录的完全一致。

只用FileStream写一个字节:

using (var stream = File.Open(fileName))
{
    stream.Position = 3;
    stream.WriteByte(0x50);
}

更简单,更易读(显然只写一个字节),做你想做的。