二進位制,當前的計算機系統使用的基本上是二進位制系統。
二進位制的單位是位,每一位可以表示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將byte轉化為二進位制字串static
string converttobinarystring(byte
bytes)
"));
}
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 的資料型別主要包括基本資料型別和構造資料型別。其中基資料本型別包括整型 浮點型 字元型 ...