雖然天天寫程式,牽涉到最基本的整型轉位元組陣列竟然,完全沒有頭緒了。
所幸有萬能的網路幫忙回憶。
要進行轉換首先要回憶起這幾個概念。
1.不管數字以什麼進製表現在我的眼前,在計算機裡都是以二進位制傳輸和儲存的。
2.byte就是8個bit,byte就是很多個連續的byte
那麼怎麼把乙個int放到byte裡呢?
很明顯把int放到byte裡相當於把一根參天大樹的樹幹平均截斷了,乙個乙個放在不同的車廂裡。
那麼現在就是要找到截斷的方法了。
首先,再次清理一下思緒,不管資料是以什麼形式出現在眼前,在計算機裡都是以二進位制形式存在的。
幻想大樹的樹幹被分解成了乙個小塊乙個小塊的木頭(bit),
每八個木頭組成乙個byte,就可以放進車廂拉走了。
怎麼取得這8個木頭呢?
肯定是和bit的操作有關。
於是想到了bit的按位與,按位或,按位異或。
1.按位與的特點:
兩個同時為1 才返回1.1&1=1,只有這一種情況返回1
2.按位或的特點:兩個有乙個為1就返回1,只有0&0時才返回0.
3.按位異或的特點:相同為0,相異為1.
在了解這三個操作的基礎上,我們要知道我們要得到的是一部分原值,只不過這個值是某部分。
先用與運算試一下,
因為資料的儲存都是從低位到高位的,所以要先移位把需要的資料移位到最低的n位,然後把這些資料切出來即可。
剛好,與操作滿足這個需求。
於是
void inttobytes(int value, byte (*pbs)[4], int size)
}
同樣如果我們要把byte組合成int也要遵循同樣的處理規律,即低位在前,
把byte陣列按照拆分時的順序反向移位,相加就能得到對應的int值了。
int bytestoint(byte bytes, int size)
return value;
}
ps:以上為小端位元組序,如果改為大端位元組序,你知道怎麼處理嗎? byte 陣列和int之間的轉換
1 int與byte之間的轉換 類似的byte short,long型 將int數值轉換為佔四個位元組的byte陣列,本方法適用於 低位在前,高位在後 的順序。和bytestoint 配套使用 param value 要轉換的int值 return byte陣列 public static byte...
go語言中int和byte轉換
主機位元組序模式有兩種,大端資料模式和小端資料模式,在網路程式設計中應注意這兩者的區別,以保證資料處理的正確性 例如網路的資料是以大端資料模式進行互動,而我們的主機大多數以小端模式處理,如果不轉換,資料會混亂 參考 一般來說,兩個主機在網路通訊需要經過如下轉換過程 主機位元組序 網路位元組序 主機位...
int型別轉換byte型別
計算機中,int型別占用4個位元組,byte型別占用1個位元組 當int型別強轉為byte型別時,計算機會擷取最後的八位 1個位元組 由於計算機儲存資料時,都是以補碼的形式進行儲存。然而,我們通常看到的數卻是計算機儲存的補碼先轉換成反碼,後轉換成原碼,再轉換成十進位制呈現的。正數 原碼 反碼 補碼 ...