c#
的二進位制檔案操作及漢字編碼轉換 1
.數值應儲存在二進位制檔案
首先列舉文字、二進位制檔案的操作(讀寫)方法: 方式
1: //
/讀取/拷貝
/刪除
using
system;
using system.io;
class test }
// 讀取檔案
using (streamreader sr = file.opentext(path)) }//
刪除/
拷貝try
catch (exception e)
", e.tostring());}}
}方式2:
//流檔案(二進位制)操作
private const string name = "test.data";
public static void main(string args)
w.close();
fs.close();
在將一系列二進位制數如方式
1寫入到
file.txt(
二進位制)
檔案後,開啟
file.txt
後顯示的資料二進位制數有些錯誤,有些正確。(與存入的不一樣)
向檔案中寫入的
預設(也可以設定)
都是使用
utf-8
編碼。開啟
file.txt
是也是預設
utf-8
編碼。
若將其如方式
2存入
二進位制檔案,則顯示的資料一致。若將二進位制數(整數)儲存為文字檔案出錯。二進位制檔案是直接寫入檔案的(磁碟)沒有經過編碼和讀取時的解碼。
2.漢字編碼轉換
相關:
unicode
是為了處理包括中文,日文等字元而提出的一種通用的字符集。最初的unicode為雙位元組字符集,即16位編碼,能夠包括65,536個字元。但這樣的容量並不能滿足所有需要,因此,現在的unicode已經擴充套件到4個位元組,能夠容納1,112,064 個字元,而這些在16位之後的擴充套件背稱為增補字元。
utf-32
、utf-16
和utf-8
是unicode
標準的編碼字符集的字元編碼方案。
utf-8
使用一至四個位元組的序列對編碼
unicode
**點進行編碼
utf-8
使用一至四個位元組的序列對編碼 unicode **點進行編碼。u+0000 至 u+007f 使用乙個位元組編碼,u+0080 至 u+07ff 使用兩個位元組,u+0800 至 u+ffff 使用三個位元組,而 u+10000 至 u+10ffff 使用四個位元組。utf-8 設計原理為:位元組值 0x00 至 0x7f 始終表示**點 u+0000 至 u+007f(basic latin 字元子集,它對應 ascii 字符集)。這些位元組值永遠不會表示其他**點,這一特性使 utf-8 可以很方便地在軟體中將特殊的含義賦予某些 ascii 字元。
gb2312(2023年)
一共收錄了
7445
個字元,包括
6763
個漢字和
682個其它符號。漢字區的內碼範圍高位元組從
b0-f7
,低位元組從
a1-fe
,占用的碼位是
72*94=6768
。其中有
5個空位是
d7fa-d7fe
。當然也可以表示數字和字元(乙個位元組,與
ascii
表示相同)。
要讀取乙個以
gb2312
編碼的包含漢字、數字、字母的二進位制檔案。
string strname =encoding.getencoding("gb2312").getstring(name,0,i) ;
// name
是讀取的二進位制陣列。
這樣就能將二進位制陣列轉換為
漢字、數字或字母
同樣:也可以將包含漢字、數字、字母的字串轉換為
二進位制陣列儲存到
二進位制檔案。
string unicodestring = "
備用43e";
byte encodedbytes = encoding.getencoding("gb2312").getbytes(unicodestring);
當然也可以進行二進位制陣列與unicode,utf-8等編碼方式的轉換
byte encodedbytes = utf8.getbytes(unicodestring);
string decodedstring = utf8.getstring(encodedbytes);
unicodeencoding unicode = new unicodeencoding();
byte encodedbytes = unicode.getbytes(unicodestring);
string decodedstring = unicode.getstring(encodedbytes);
C 的二進位制檔案操作
1 數值應儲存在二進位制檔案 首先列舉文字 二進位制檔案的操作 讀寫 方法 方式 1 讀取 拷貝 刪除 using system using system.io class test 讀取檔案 using streamreader sr file.opentext path 刪除 拷貝 try ca...
二進位制檔案操作
無關資料區 jpg資料區 無關資料區 jpg資料區 無關資料區 jpg資料區 現想把這些jpg資料從該檔案中讀出來,生成乙個個單獨的檔案,該如何做呢?幫你寫了個程式,測試了只含有乙個資訊的檔案 呼叫 void test fp.close 思路是,先得到ff的值,然後再判斷下一位是否是0xd8,但這裡...
二進位制檔案操作
無關資料區 jpg資料區 無關資料區 jpg資料區 無關資料區 jpg資料區 現想把這些jpg資料從該檔案中讀出來,生成乙個個單獨的檔案,該如何做呢?幫你寫了個程式,測試了只含有乙個資訊的檔案 呼叫 void test fp.close 思 路是,先得到ff的值,然後再判斷下一位是否是0xd8,但這...