byte char和String之間的關係!

2021-10-09 18:30:48 字數 3407 閱讀 5902

乙個位元組範圍為00000000到11111111,就是記憶體中八位二進位製碼。範圍為-128到127,現在看乙個位元組碼所能代表的實際資訊:

-

128?

-127?-

126?

-125?-

124?

-123?-

122?

-121?-

120?

-119?-

118?

-117?-

116?

-115?-

114?

-113?-

112?

-111?-

110?

-109?-

108?

-107?-

106?

-105?-

104?

-103?-

102?

-101?-

100?-99

?-98?

-97?-

96?-95

?-94?

-93?-

92?-91

?-90?

-89?-

88?-87

?-86?

-85?-

84?-83

?-82?

-81?-

80?-79

?-78?

-77?-

76?-75

?-74?

-73?-

72?-71

?-70?

-69?-

68?-67

?-66?

-65?-

64?-63

?-62?

-61?-

60?-59

?-58?

-57?-

56?-55

?-54?

-53?-

52?-51

?-50?

-49?-

48?-47

?-46?

-45?-

44?-43

?-42?

-41?-

40?-39

?-38?

-37?-

36?-35

?-34?

-33?-

32¢ -

31£ -

30¬ -

29 ̄ -

28¦ -

27¥ -26?

-25?-

24?-23

?-22?

-21?-

20?-19

?-18?

-17?-

16?-15

?-14?

-13?-

12?-11

?-10?

-9?-

8?-7

?-6?

-5?-

4?-3

?-2?

-1?0

1234

5678

9101112

1314

1516

1718

1920

2122

2324

2526

2728

2930

313233!

34" 35# 36$ 37%38

&39' 40(41

)42*43

+44,45

-46.47/

480491

502513

524535

546557

56857958:

59;60<61=

62>63?

64@ 65a 66b 67c 68d

69e 70f

71g 72h 73i 74j 75k 76l 77m 78n 79o 80p

81q 82r 83s 84t 85u 86v 87w 88x 89y 90z 91

[92\ 93]94

^95_ 96` 97a 98b 99c 100d

101e 102f

103g 104h 105i 106j 107k 108l 109m 110n 111o 112p 113q 114r 115s 116t 117u 118v 119w 120x

121y 122z 123

126~

127

上表就是乙個位元組碼多代表的資訊,其中0~127這個範圍與asiic碼對應,比如10對應的就是退格。所以,如果直接進行運算的話,位元組首先會轉換成int型,將位元組轉換為asiic對應的數字。

char就是比如用單引號引起的都是字元,『a』,'2』等,也可以表示中文。

乙個字元佔兩個位元組,範圍為0~65535。

系統會按照一定的方式,將二進位制資訊對應成字元,這就是編碼。

比如』中』按照gbk編碼方式就佔兩個位元組,對應的數字為20013.

system.out.

println((

int)

'中')

;system.out.

println((

char

)20013

);

20013

字串就是由多個字元構成的,格式為」a「。

byte表徵儲存資訊,表示記憶體大小,字元和字串表徵的時候資訊,也是就是位元組經過解碼後顯示的內容。

字元占用位元組的個數是由編碼方式決定的,字串是由多個字元組成!

看下面的例子

public

static

void

testa()

catch

(ioexception e)

}

這個函式的作用就是複製檔案內容,檔案裡的內容是」你好「,編碼方式為utf-8,佔6個位元組,new string(bytes);這個函式會把utf-8編碼的資訊譯成gbk(系統預設,中文系統gbk,英文系統ios)所以輸出的結果就變成了」浣犲ソ「。

順便研究一下reader和writer的編碼方式。system…會把放在記憶體中的二進位製碼先拋掉以前的編碼方式的標記,然後按照系統編碼方式進行解碼輸出。

reader和writer函式進行的操作沒有改變記憶體中位元組本身所攜帶的編碼方式。所以在複製檔案的時候utf-8複製過去還是utf-8的檔案。

public

static

void

testa()

catch

(ioexception e)

}

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string 對映為 framework的 string。如...

String和string的區別

最近老看見有人在論壇上問string和string有什麼區別,答案五花八門差點兒沒讓我背過氣去,乾脆放到blog上來,論壇上就貼位址了 首先,在一般情況下,string和string是一樣的,但是他們也存在如下區別 1 string始終代表 system.string 1.x 或 system.st...

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string對映為framework的string。如果用s...