c 基本型別儲存方式的研究

2022-02-08 08:35:02 字數 2985 閱讀 7430

二進位制,當前的計算機系統使用的基本上是二進位制系統。

二進位制的單位是位,每一位可以表示2個數: 0或1。

byte(位元組) 有8位,可以表示的數為2的8次方,即256個數,範圍為【0-255】。

下面是自己整理的c#型別大小,如果存在錯誤,望指正。

int 有32位,可以轉化為byte[4]。可以表示 4,294,967,296‬(2的32次方的)個數字,範圍為【-2,147,483,648,2,147,483,647】

說到char型別,首先必須考慮編碼,不同的編碼方式對應不同的字元。這裡的編碼方式屬於文字編碼。

字串編碼是字元和數字的對應關係。乙個數字對應乙個字元,乙個字元對應乙個數字。

這個東西源遠流長,說清楚不太容易,感興趣的可以看這篇文章:

只說幾點:

1、unicode是國際組織制定的可以容納世界上所有文字和符號的字元編碼方案。不包括實現。

2、utf32,utf7(被淘汰),utf8,utf16是unicode的實現方式。

3、c#中的unicode指的是utf-16

下面是一組測試

public

void

starttest()

private

static

void testoneencode(string

encodename)

編碼,每個位元組對應的數字為:))}");

console.writeline($

"'a'使用 編碼,再使用 解碼,得到:))[0]}");

console.writeline($

"'、'使用 編碼,每個位元組對應的數字為:))}");

console.writeline($

"'、'使用 編碼,再使用 解碼,得到:))[0]}");

console.writeline($

"'中'使用 編碼,每個位元組對應的數字為:))}");

console.writeline($

"'中'使用 編碼,再使用 解碼,得到:))[0]}");

console.writeline();

}

關鍵部分測試**,沒有什麼技術含量

下面是輸出

char編碼的**

'a'使用 ascii 編碼,每個位元組對應的數字為:97

'a'使用 ascii 編碼,再使用 ascii 解碼,得到:a

'、'使用 ascii 編碼,每個位元組對應的數字為:63

'、'使用 ascii 編碼,再使用 ascii 解碼,得到:?

'中'使用 ascii 編碼,每個位元組對應的數字為:63

'中'使用 ascii 編碼,再使用 ascii 解碼,得到:?

'a'使用 gb2312 編碼,每個位元組對應的數字為:97

'a'使用 gb2312 編碼,再使用 gb2312 解碼,得到:a

'、'使用 gb2312 編碼,每個位元組對應的數字為:161,162

'、'使用 gb2312 編碼,再使用 gb2312 解碼,得到:、

'中'使用 gb2312 編碼,每個位元組對應的數字為:214,208

'中'使用 gb2312 編碼,再使用 gb2312 解碼,得到:中

'a'使用 unicode 編碼,每個位元組對應的數字為:97,0

'a'使用 unicode 編碼,再使用 unicode 解碼,得到:a

'、'使用 unicode 編碼,每個位元組對應的數字為:1,48

'、'使用 unicode 編碼,再使用 unicode 解碼,得到:、

'中'使用 unicode 編碼,每個位元組對應的數字為:45,78

'中'使用 unicode 編碼,再使用 unicode 解碼,得到:中

'a'使用 utf-8 編碼,每個位元組對應的數字為:97

'a'使用 utf-8 編碼,再使用 utf-8 解碼,得到:a

'、'使用 utf-8 編碼,每個位元組對應的數字為:227,128,129

'、'使用 utf-8 編碼,再使用 utf-8 解碼,得到:、

'中'使用 utf-8 編碼,每個位元組對應的數字為:228,184,173

'中'使用 utf-8 編碼,再使用 utf-8 解碼,得到:中

'a'使用 utf-16 編碼,每個位元組對應的數字為:97,0

'a'使用 utf-16 編碼,再使用 utf-16 解碼,得到:a

'、'使用 utf-16 編碼,每個位元組對應的數字為:1,48

'、'使用 utf-16 編碼,再使用 utf-16 解碼,得到:、

'中'使用 utf-16 編碼,每個位元組對應的數字為:45,78

'中'使用 utf-16 編碼,再使用 utf-16 解碼,得到:中

'a'使用 utf-32 編碼,每個位元組對應的數字為:97,0,0,0

'a'使用 utf-32 編碼,再使用 utf-32 解碼,得到:a

'、'使用 utf-32 編碼,每個位元組對應的數字為:1,48,0,0

'、'使用 utf-32 編碼,再使用 utf-32 解碼,得到:、

'中'使用 utf-32 編碼,每個位元組對應的數字為:45,78,0,0

'中'使用 utf-32 編碼,再使用 utf-32 解碼,得到:中

1、如果上面用將byte轉化為數字覺得不直觀,也可以用下面的**轉化為二進位制來看。

private

static

string converttobinarystring(byte

bytes)

"));

}

將byte轉化為二進位制字串

2、c#中的數字型別設計

數字的儲存方式有兩種,大端和小端,c#使用小端,如果跨語言互動,需要考慮轉換。

c 基本型別

資料型別分為兩種 值型別和引用型別,這兩種型別的物件在記憶體的儲存方式不同。定義 引用型別 表示操作的物件是同乙個,即當傳乙個引數給另乙個方法時,在另乙個方法中改變這個變數的值,那麼呼叫這個方法時傳入的值也將發生變化。值型別 表示複製乙個當前變數傳遞給方法,在方法中改變這個值時,最初生命的變數值不會...

C 基本型別

const限定符 浮點數sizeof 部分問題總結 浮點型 float,double,long double 根據寬度width來排序 char short int long long long 寬度,表示範圍 很多系統直接用最小長度,short為16位,long為32位,但int可以有很多選擇 1...

C 的基本型別

在數學中,整數和分數統稱為有理數,無限不迴圈小數和開根開不盡的數統稱為無理數,而有理數和無理數統稱為實數。在計算機中,處理的物件是資料。為了描述不同的物件而需要不同的資料,因此,c 語言提供了豐富的資料型別。c 的資料型別主要包括基本資料型別和構造資料型別。其中基資料本型別包括整型 浮點型 字元型 ...