2009-07-11 3 views
1

Im пытается написать один байт в определенном месте в файле. Это то, что им с помощью в данный момент:C# Как написать один байт на смещение?

BinaryWriter bw = new BinaryWriter(File.Open(filename, FileMode.Open)); 
bw.BaseStream.Seek(0x6354C, SeekOrigin.Begin); 
bw.Write(0xB0); 
bw.Close(); 

Проблема заключается в том, что BinaryWriter.Write (арг) записывает четыре-байтовое целое число в в положении. Я хочу написать только один байт в определенном месте. А потом, возможно, еще два байта, где, как я указываю, сколько байтов писать?

ответ

3

Существует абсолютно никакой необходимости использовать высокоуровневый BinaryWriter просто написать простые байты в поток - это более эффективная и аккуратная только, чтобы сделать это:

Stream outStream = File.Open(filename, FileMode.Open); 
outStream.Seek(0x6354C, SeekOrigin.Begin); 
outStream.WriteByte(0xb0); 

(В общем, вы также не должны» t Ищите после присоединения BinaryWriter к вашему потоку - BinaryWriter должен контролировать поток, а изменение вещей «за его спиной» немного грязно)

+0

Хм, да, более высокий уровень не является неотъемлемым, спасибо. – Dacto

2

изменение

bw.Write(0xB0); 

в

bw.Write((byte)0xB0); 
+0

Спасибо! так просто!! – Dacto

1

Вы можете бросить в байте:

bw.Write((byte)0xB0); 

Это должно привести к правильной перегруженной версии Write будет вызван.