① c語言如何讀寫二進制
內容的寫入分兩種,a.字元 b.位元組
前者可以寫一些字元串,後者主要用來內寫入 視頻,音頻那些數據容.
就像你用記事本打開 *.mp3文件一樣會出現亂碼。
而如果你想寫入字元串也出現亂碼,則應該修改寫入時的字元編碼格式。
有Unicode,utf-8,ansi,gbk等等。而windows有自己默認的讀取格式,所以當你寫入的格式與默認格式不相同時就會出現用記事本打開時出現亂碼了。
另一種情況是在寫入字元串之前對字元串進行加密。
如果需要具體的例子,可以M我QQ
② vb如何編程二進制文件
1、用open打開二進制文件,用put寫文件,用get讀文件。
2、所需工具:vb6
3、示例:(二進制文件的寫出與讀取)
PrivateSubCommand1_Click()
Open"c:111.txt"ForBinaryAccessWriteAs#1
DimsAsString
Dimn1AsInteger,n2AsLong
Dimf1AsSingle,f2AsDouble
s="12345"
n1=10
n2=50000
f1=0.1
f2=0.0000000001
Put#1,,s
Put#1,,n1
Put#1,,n2
Put#1,,f1
Put#1,,f2
Close#1
Prints,n1,n2,f1,f2
EndSub
PrivateSubCommand2_Click()
Open"c:111.txt"ForBinaryAccessReadAs#1
DimsAsString
Dimn1AsInteger,n2AsLong
Dimf1AsSingle,f2AsDouble
s=String(5,0)
Get#1,,s
Get#1,,n1
Get#1,,n2
Get#1,,f1
Get#1,,f2
Close#1
Prints,n1,n2,f1,f2
EndSub
4、注意:讀取字元串時,提前用string()函數生成要讀取的長度的串,或者使用定長串。
③ 如何創建一個二進制文件用C語言調用.
所有文件抄都可以看成二襲進制型的
用f1=fopen("bbb.txt","wb");
來創建,和"w"區別在於
列印"\n"時
"w"是2位元組,0x0d 0x0a
而"wb"是1位元組,0x0a
二進制數據這樣寫入
比如是個int a;
fwrite(&a,sizeof(int),1,f1);
數組就不用加&了
④ vb 二進制文件讀寫
Dim bytes() As Byte
dim lLength as Long
Open "c:\main.exe" For Binary As #1 '讀取位元組
lLength=LOF(1)
ReDim bytes(1 To lLength) As Byte
Get 1, , bytes
Close #1
'將文件以十六進制方式輸出到Text1中,這個過程很耗時,130K的文件大概需要2分鍾,而且越到後面速度越慢
Dim strTmp As String
For i = 1 To lLength
strTmp = strTmp & " " & Hex(bytes(i))
DoEvents
Next
Text1.Text = strTmp
Open "d:\abcd.exe" For Binary As #1 '將位元組轉存
Put 1, , bytes
Close #1
End Sub
⑤ vb以二進制讀取和寫入文件
為什麼你認為是像0,1這樣的?你用的是位元組數組,數組每個元素的值在0~255之間!寫的話用Put,而不是write!
⑥ C++中怎樣進行二進制文件的讀寫
#include
<fstream>
寫
二進制文件
應該使用ofstream類,文件的打開模式一定要是
binary,如果傳入的不是
binary,
文件將以ASCII方式打開。
下面是示例代碼,用於寫入文件。
std::ofstream
fout("a.dat",
std::ios::binary);
int
nNum
=
20;
std::string
str("Hello,
world");
fout.write((char*)&nNum,
sizeof(int));
fout.write(str.c_str(),
sizeof(char)
*
(str.size()));
fout.close();
而寫
文本文件
則比較簡單,如下:
std::ofstream
fout("b.dat");
int
nNum
=
20;
std::string
str("Hello,
world");
fout
<<
nNum
<<","<<
str
<<
std::endl;
fout.close();
讀二進制文件
讀取二進制文件可以使用ifstream
類來進行,文件的打開模式一定要是
binary,如果傳入的不是
binary,
文件將以ASCII方式打開。
下面是示例代碼:
std::ifstream
fin("a.dat",
std::ios::binary);
int
nNum;
char
szBuf[256]
=
{0};
fin.read((char*)&nNum,
sizeof(int));
fin.read(szBuf,
sizeof(char)
*
256);
std::cout
<<"int
=
"<<
nNum
<<
std::endl;
std::cout
<<"str
=
"<<
szBuf
<<
std::endl;
fin.close();
二進制文件是指包含在
ASCII及擴展
ASCII
字元中編寫的數據或程序指令的文件。
計算機文件
基本上分為二種:二進制文件和
ASCII(也稱
純文本文件
),圖形文件及
文字處理
程序等
計算機程序
都屬於二進制文件,這些文件含有特殊的格式及計算機代碼。ASCII
則是可以用任何文字處理程序閱讀的
簡單文本
文件。
簡單的說
,如果一個文件專門用於存儲文本字元的數據,沒有包含字元以外的其他數據,我們就稱之為文本文件,除此之外的文件就是二進制文件。
廣義的二進制文件即指文件,由文件在外部設備的存放形式為二進制而得名。狹義的二進制文件即除文本文件以外的文件。文本文件是一種由很多行字元構成的計算機文件。文本文件存在於
計算機系統
中,通常在文本文件最後一行放置文件結束標志。文本文件的編碼基於字元
定長
,
解碼
相對要容易一些;二進制文件編碼是變長的,靈活利用率要高,而解碼要難一些,不同的二進制文件解碼方式是不同的。
從本質上來說他們之間沒有什麼區別,因為他們在硬碟上都有一種的存放方式--二進制,但是如果要對他們有些區分的話,那可以這樣理解。每個字元由一個或多個位元組組成,每個位元組都是用的-128—127之間的部分數值來表示的,也就是說,-128——127之間還有一些數據沒有對應任何字元的任何位元組。如果一個文件中的每個位元組的內容都是可以表示成字元的數據,我們就可以稱這個文件為文本文件,可見,文本文件只是二進制文件中的一種特例,為了與文本文件相區別,人們又把除了文本文件以外的文件稱為二進制文件,由於很難嚴格區分文本文件和二進制文件的概念,所以我們可以簡單地認為,如果一個文件專門用於存儲文本字元的數據,沒有包含字元以外的其他數據,我們就稱之為文本文件,除此之外的文件就是二進制文件。
⑦ C 語言向文件寫入二進制信息
不清楚你是用什麼工具打開文件查看的,如果是記事本的話,是按照ASCII方式顯示的,所以你看到的內容是Administrator 123456 0,你可以使用UltraEdit工具打開UserInfo.bin,有 十六進制 和 文本方式 兩種方式可以查看文件內容。
⑧ c語言如何創建二進制文件
在windows系統下,C語言打開文件的"文本文件"方式和"二進制文件回方式"的區別是:
在文本文件模式下:當給文件寫入'\n'時,實答際會寫入'\r''\n',讀文件時如果讀到\r\n,會丟棄\r只保留\n, 除此以外,和二進制方式沒有任何區別
舉例:
FILE* fp;
fp = fopen("123", "w");
fputc(10,fp); //10就是\n 但實際上會對文件寫入\r\n,你用16進制編輯器打開123,會看到0D0A 兩個字元
fclose(fp);
甚至這樣:
fp = fopen("123", "w");
int n = 1116682; //這是16進制的0x110A0A
fwrite(&n, 4, 1, fp); //因為那數字位元組里有0A,寫入時會擠進去0D實際寫入0D0A0D0A1100
fclose(fp);
而這樣就只寫入0A
fp = fopen("123", "wb");
fputc(10,fp); //只寫入0A
至於你看到的"仍是文本文件",是因為你對文件寫入的內容就是些文本而已
所有文件都是二進制的,文本文件只是文件的內容都是些ASCII或者unicode等可讀的字元而已
⑨ 二進制文件的如何使用語句操作二進制文件
我們將上面的那個二進制文件保存為:TestBin.Bin 來舉例。讀取和寫入二進制其實是兩個很類似的操作,了解了其中之一,另一個也就不難了。
二進制文件我們通常使用直接讀取方式,Open 語句可以寫為:
引用:
Open( 12 , File = 'TestBin.Bin' , Access = 'Direct' , Form = 'Unformatted' , RecL = 4 )
上面的 Access 表示直接讀取方式,Form 表示無格式儲存。比較重要的是 RecL 。我們讀取數據時,是用記錄來描述單位的,每一次讀入或寫入是一個記錄。記錄的長度在 Open 時飢碰就確定下來,以後不能改變。如果需要改變,只能 Close 以後再此 Open。記錄長姿巧度在某些編譯器下表示讀取的 4 位元組長度的倍數,規定為 4 表示記錄長度為 16 位元組。有些編譯器下就直接跡肢鍵表示記錄的位元組數,規定為 4 則表示記錄長度為 4 位元組。這個問題需要參考編譯器手冊。在 VF 系列裡,這個值是前面一個含義。可以通過設置工程屬性的 Fortran,Data,Use Bytes as RECL= Unit for Unformatted Files 來改變,使之成為後一個含義。在命令行模式下,則使用 /assume:byterecl 這個編譯選項。確定 RecL 大小是我們需要做的事情,一般來說,不適合太大,也不適合太小。還需要結合數據儲存方式來考慮。太小的話,我們需要執行讀寫的次數就多,太大的話,我們就不方便操作小范圍的數據。有時候我們甚至會分多次來讀取數據,每一次的 RecL 都不同。對於上面的 TestBin.Bin 文件來說,它比較簡單,我以 16 位元組長度和 8 位元組長度兩種讀取方式來演示,你甚至可以一次 32 個位元組長度全部讀完。