編碼格式 和 長度計算

2021-08-22 19:34:12 字數 1836 閱讀 8078

》字串的結束符

在c語言中沒有專門的字串變數,通常用乙個字元陣列來存放乙個字串。字串總是以'\0'作為串的結束符。因此當把乙個字串存入乙個陣列時,也把結束符 '\0'存入陣列,並以此作為該字串是否結束的標誌。有了'\0'標誌後,就不必再用字元陣列的長度來判斷字串的長度了。

unicode碼內容:它前128個字元就是ascii碼,之後是擴充套件碼。

ascii碼一共規定了128個字元的編碼,比如空格「space」是32(二進位制00100000),大寫的字母a是65(二進位制01000001)。這128個符號(包括32個不能列印出來的控制符號),只占用了乙個位元組的後面7位,最前面的1位統一規定為0。

編號從0開始的32種狀態分別規定了特殊的用途,終端、印表機遇上約定好的這些位元組被傳過來時,就要做一些約定的動作。於是就把這些0x20以下的位元組狀態稱為"控制碼"。

》gbk編碼,是在gb2312-80標準基礎上的內碼擴充套件規範,使用了雙位元組編碼方案,其編碼範圍從8140至fefe(剔除xx7f),共23940個碼位,共收錄了21003個漢字,完全相容gb2312-80標準,支援國際標準iso/iec10646-1和國家標準gb13000-1中的全部中日韓漢字,幷包含了big5編碼中的所有漢字。gbk編碼方案於2023年10月制定, 2023年12月正式發布,目前中文版的win95、win98、windows nt以及windows 2000、windows xp、win 7等都支援gbk編碼方案。

》字元有一位元組和雙位元組編碼,00–7f範圍內是一位,和ascii保持一致,此範圍內嚴格上說有96個字元和32個控制符號。

00-7f屬於ascii編碼, 8140-fefe才屬於gbk編碼, gbk編碼支援與ascii編碼混編. 字串中, 英文與數字字元屬於ascii編碼, 故占用乙個位元組, 中文字元屬於gbk編碼, 故占用兩個位元組。實際是gbk字符集裡也有英文與數字字元, 但屬於全形字符, 占用兩位元組,看使用者用的是半形的還是全形的。

utf-8最大的乙個特點,就是它是一種變長的編碼方式。它可以使用1~4個位元組表示乙個符號,根據不同的符號而變化位元組長度。

佔2個位元組的:帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要二個位元組編碼

佔3個位元組的:基本等同於gbk,含21000多個漢字

佔4個位元組的:中日韓超大字符集裡面的漢字,有5萬多個,通常漢字佔三個位元組,擴充套件b區以後的漢字佔四個位元組。

乙個utf8數字佔1個位元組

乙個utf8英文本母佔1個位元組

少數是漢字每個占用3個位元組,多數占用4個位元組。

utf-8採用如下所示的二進位制方式來表示31位ucs-4,x表示有效位:

1位元組 0******x

2位元組 110***xx 10******

3位元組 1110***x 10****** 10******

4位元組 11110*** 10****** 10****** 10******

5位元組 111110xx 10****** 10****** 10****** 10******

6位元組 1111110x 10****** 10****** 10****** 10****** 10******

從上可以看得出,如果處在第一位元組的引導位元組最高位為0,則是一位元組。否則看前導1的個數,來確定是幾個位元組長。前導1與有效位之間有0相隔,也可以通過首位元組的值範圍來確定位元組數。

1位元組 0  ~127

2位元組 192~223

3位元組 224~239

4位元組 240~247

5位元組 248~251

6位元組 252~253

隨後的位元組每個都以10為前導位,取值範圍則在128~191之間。可以立即得知乙個位元組是否為後續位元組,因為引導位元組的引導位不是00、01就是11,不會是10。

base64編碼長度計算

先看乙個來自牛客網的題目 在網路傳輸資料時,經常需要將二進位制資料轉換為乙個可列印字串。一般用到的可列印字元集合包含64個字元,因此又稱為base64表示法。現有乙個char陣列長度為12,要將它表示為base64字串,請問base64字串最少需要 個char 如果char陣列長度為20,則需要 個...

計算機編碼格式總結

1.ascii 我們知道,計算機內部,所有資訊最終都是乙個二進位制值。每乙個二進位制位 bit 有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為乙個位元組 byte 也就是說,乙個位元組一共可以用來表示256種不同的狀態,每乙個狀態對應乙個符號,就是256個符號,從000000...

計算機基礎 常用編碼格式

美國資訊交換標準 american standard code for information interchange,ascii 是基於拉丁字母的一套計算機編碼系統,主要用於顯示現代英語和其他西歐語言。ascii 是現今最通用的單位元組編碼系統,並等同於國際標準 iso iec 646。乙個英文本...