观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

如何打開bin文件(如何打開bin文件不亂碼)

  • 生活
  • 2023-04-19 15:42

BIN文件,即二進制文件,廣泛應用于嵌入式,我們常用的Firmware通常會以BIN文件或者HEX文件格式存儲,因此,對BIN文件的讀寫操作其實還是很普遍的,在這里,我記錄一下我常用到的BIN文件操作。

首先C#Winform中有Binary文件(BIN文件)的基本操作類。如下所示

FileStreamfile_path=newFileStream(文件名,FileMode,FileAccess);//BinaryReaderbin_read=newBinaryReader(file_path);BinaryWriterbin_write=newBinaryWriter(file_path);

如上所示,如果是要讀BIN文件,那么直接定義BinaryReader即可,如果是要寫BIN文件,定義BInaryWriter。讀寫的基本操作為:

讀BIN文件的操作為:bin_read.ReadByte():返回值為讀到的Byte值;bin_read.ReadBytes(count);返回值為個數為count的Byte數組。還有很多不同返回格式,int,char等,我這里不一一贅述。

寫BIN文件的操作為:bin_write.Write(value):其中value就是要寫的值,value可以是byte,int或者char等格式。bin_write.Write(byte[]buffer,intindex,intcount);這個***的含義就是將buffer數組中的一部分值(buffer數組的開始索引為index,長度為count),賦值至BIN文件當前位置。

下面我舉一個例子,BIN文件的寫,從0寫到255,256個byte。

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO;namespaceTEST{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){SaveFileDialogsave_file=newSaveFileDialog();save_file.Filter="BIN文件|*.bin";if(save_file.ShowDialog()==DialogResult.OK){FileStreamfile_path=newFileStream(save_file.FileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);BinaryWriterbin_write=newBinaryWriter(file_path);//創建BIN文件流byte[]init_byte=newbyte[256];for(inttemp=0;temp<256;temp++){init_byte[temp]=(byte)temp;}bin_write.Write(init_byte,0,256);//給BIN文件寫內容bin_write.Flush();bin_write.Close();file_path.Close();}}}}

文件運行結果為:

bin文件內容

那么寫操作完成了,替換操作要怎么操作呢?實際中如果要實現HEX文件轉換為BIN文件,那么替換功能將會非常有用,比如將其中的某幾個數字改動一下,見代碼:

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO;namespaceTEST{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){SaveFileDialogsave_file=newSaveFileDialog();save_file.Filter="BIN文件|*.bin";if(save_file.ShowDialog()==DialogResult.OK)//打開文件對話框{FileStreamfile_path=newFileStream(save_file.FileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);BinaryWriterbin_write=newBinaryWriter(file_path);//創建BIN文件流byte[]init_byte=newbyte[256];for(inttemp=0;temp<256;temp++){init_byte[temp]=(byte)temp;}bin_write.Write(init_byte,0,256);//初始化BIN文件Console.WriteLine(file_path.Length);//看一下目前文件大小bin_write.Seek(255,SeekOrigin.Begin);//修改BIN文件當前位置至第255個字節bin_write.Write(0x08);//第255個字節改為08bin_write.Seek(8,SeekOrigin.Begin);//修改BIN文件當前位置至第8個字節bin_write.Write((byte)0x01);//第8個字節改為01bin_write.Write((byte)0x02);//第9個字節改為02bin_write.Write((byte)(0x90));//第10個字節改為90byte[]buffer=newbyte[8];for(inttemp=0;temp<8;temp++){buffer[temp]=(byte)(temp+1);}bin_write.Seek(128,SeekOrigin.Begin);//修改BIN文件當前位置至第128個字節bin_write.Write(buffer,2,5);//將Buffer字節數組中的第2到到第7個數賦值到BIN文件的第128到133個字節bin_write.Write((byte)(0x90));//第134個字節改為08Console.WriteLine(file_path.Length);//看一下目前的文件大小file_path.SetLength(256);//文件大小已經超過256,只保留256個字節Console.WriteLine(file_path.Length);//看一下目前的文件大小bin_write.Flush();//釋放文件資源bin_write.Close();file_path.Close();}}}}

上述代碼的運行結果為:

可以看到,BIN文件相應的位置已經更改完成,并且其他位置也沒有出現變動。

這里我需要提一下,在做替換過程中,BIN文件的大小是會發生變化的,因此我用Console.WriteLine(file_path.Length)來監控文件的大小變化??刂婆_輸出的結果為:

256,259,256

因此,我在代碼的最后將文件的長度強行設置為256.這個不用擔心數據,實際測試下來,如果沒有file_path.SetLength(256)語句,那么結果如下:

可以看到后面幾個數據是無效的數據,這個可以直接去掉。

以上是我平時比較常用的BIN文件操作。當然,BIN文件的某一位的刪除和插入,我還沒有比較容易的辦法,不過BIN文件的刪除或者插入特定字符用的場景非常少,因此沒有過多的研究。希望以上內容對大家有所幫助。

猜你喜歡

主站蜘蛛池模板: 一级aaa级毛片午夜在线播放 | 67194成人在线观看 | 特级毛片| 亚洲精品成人一区 | 一色屋精品亚洲香蕉网站 | 玖草在线视频 | 欧美一级毛片欧美一级成人毛片 | 日本特爽特黄特刺激大片 | 久久精品国产国产精品四凭 | 欧美日韩不卡一区 | a级毛片毛片免费观看永久 a级毛片毛片免费很很综合 | 老人毛片| 国产一二三区精品 | 国产99视频精品免费视频免里 | xxxxbbbb国产精品| 国产成人精品亚洲日本语音 | 欧美精品亚洲 | 久久99国产精品 | 免费的一级片网站 | 亚洲国产日韩女人aaaaaa毛片在线 | 99在线精品免费视频九九视 | 一级女性全黄生活片免费 | 亚洲欧美韩国 | 国产精品久久国产精品99盘 | 日韩亚洲人成网站在线播放 | 一色屋色费精品视频在线看 | 国产精品久久久久久一区二区三区 | 欧美人与zoxxxx另类9 | 国产精品三级手机在线观看 | 久草手机视频在线 | 欧美一级毛片美99毛片 | 亚洲综合色在线观看 | 日韩欧美国产视频 | 亚洲va在线va天堂va四虎 | 91久久国产成人免费观看资源 | 男女午夜爱爱久久无遮挡 | 中文字幕在线观看不卡视频 | 一级毛片真人免费播放视频 | 九九国产在线视频 | 性欧美videofree另类17 | 91成年人 |