问题描述
本来要对一个2进制文件进行改写。计划采用如下方法。byte[]buffer=newbyte[139]FileStream.Seek(offset,SeekOrigin.Begin);//文件流定位FileStream.Write(buffer,0,140);//将buffer数组内数据写入文件现在头痛的是buffer赋值的问题。。这个buffer为16进制的类似下面这样共有100多个字节。2E00310032003500252003100380036002F0073006500620075006B006100请问有什么好办法能解决这个问题。或是其它方法重写文件!感谢赐教,不胜感激!!
解决方案
解决方案二:
问题不明确,你是要写入文本内容,类似FF0E12FE这样的?
解决方案三:
System.IO.StreamWritersw=newSystem.IO.StreamWriter("d:\1.txt",false);for(inti=0;i<buf.Length;i++){sw.Write(buf[i].ToString("X2"));}sw.Close();sw.Dispose();
解决方案四:
引用1楼的回复:
问题不明确,你是要写入文本内容,类似FF0E12FE这样的?
不是写入文本我要写入16进制文件也就是可执行文件这个buffer为16进制的类似下面这样共有100多个字节。2E00310032003500250003100380036002F0073006500620075006B006100我想实现的效果是buffer[0]=0x2Ebuffer[1]=0x00buffer[2]=0x31buffer[3]=0x00buffer[4]=0x32buffer[5]=0x00以此类推再举个例子有一个可执行文件从某个offset开始的16进制如下22003f0036003700282003200310036002F0073006400620075006A006F00然后我用新的16进制值改写文件就假设是下面的16进制值改写2E00310032003500252003100380036002F0073006500620075006B006100有100多个字节一个一个赋值累死了!
解决方案五:
我晕,你还是没弄明白byte是什么东西,什么十六进制,二进制,十进制你先百度byteintcharuintuchar是什么意思,内存分布是什么样子就不会有这个问题了。没有所谓的十六进制文件