主機位元組序
主機位元組序模式有兩種,大端資料模式和小端資料模式,在網路程式設計中應注意這兩者的區別,以保證資料處理的正確性;例如網路的資料是以大端資料模式進行互動,而我們的主機大多數以小端模式處理,如果不轉換,資料會混亂 參考 ;一般來說,兩個主機在網路通訊需要經過如下轉換過程:主機位元組序 —> 網路位元組序 -> 主機位元組序
大端小端區別
大端模式:big-endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端
低位址 --------------------> 高位址
高位位元組 地位位元組
小端模式:little-endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端
低位址 --------------------> 高位址
低位位元組 高位位元組
什麼是高位位元組和低位位元組
例如在32位系統中,357轉換成二級制為:00000000 00000000 00000001 01100101,其中
00000001 | 01100101
高位位元組 低位位元組
int和byte轉換
在go語言中,b其實是uint8的別名,byte 和 uint8 之間可以直接進行互轉。目前來只能將0~255範圍的int轉成byte。因為超出這個範圍,go在轉換的時候,就會把多出來資料扔掉;如果需要將int32轉成byte型別,我們只需要乙個長度為4的byte陣列就可以了
大端模式下
func f2()
小端模式下
// 在上面我們講過,小端剛好和大端相反的,所以在轉成小端模式的時候,只要將byte陣列的下標首尾對換一下位置就可以了
func f3()
go轉換demo
//整形轉換成位元組
func inttobytes(n int) byte )
binary.write(bytesbuffer, binary.bigendi程式設計客棧an, x)
return bytesbuffer.bytes()
}//位元組轉換成整形
func bytestoint(b byte) int
總結本文標題: go語言中int和byte轉換方式
本文位址:
go語言中int和byte轉換
主機位元組序模式有兩種,大端資料模式和小端資料模式,在網路程式設計中應注意這兩者的區別,以保證資料處理的正確性 例如網路的資料是以大端資料模式進行互動,而我們的主機大多數以小端模式處理,如果不轉換,資料會混亂 參考 一般來說,兩個主機在網路通訊需要經過如下轉換過程 主機位元組序 網路位元組序 主機位...
int和byte 陣列轉換
雖然天天寫程式,牽涉到最基本的整型轉位元組陣列竟然,完全沒有頭緒了。所幸有萬能的網路幫忙回憶。要進行轉換首先要回憶起這幾個概念。1.不管數字以什麼進製表現在我的眼前,在計算機裡都是以二進位制傳輸和儲存的。2.byte就是8個bit,byte就是很多個連續的byte 那麼怎麼把乙個int放到byte裡...
Go語言中byte型別和rune型別(五)
go語言中字串需要使用用雙引號,而單引號用來表示單個的字元,字元也是組成字串的元素。go語言的字元有兩種 uint8型別,或者叫 byte 型,代表了ascii碼的乙個字元。rune型別,代表乙個utf 8字元。ascii編碼是1個位元組,而utf 8是可變長的編碼,當要表示中文等非ascll編碼的...