替换文件中的字节
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);
}
更简单,更易读(显然只写一个字节),做你想做的。
我正在尝试用其他一些特定字节替换文件中的某些字节,但我的二进制编写器替换了太多字节时出现问题。我的代码有什么问题?
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);
}
更简单,更易读(显然只写一个字节),做你想做的。