int和byte 陣列轉換

2021-08-21 08:20:03 字數 1038 閱讀 8822

雖然天天寫程式,牽涉到最基本的整型轉位元組陣列竟然,完全沒有頭緒了。

所幸有萬能的網路幫忙回憶。

要進行轉換首先要回憶起這幾個概念。

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個位元組 由於計算機儲存資料時,都是以補碼的形式進行儲存。然而,我們通常看到的數卻是計算機儲存的補碼先轉換成反碼,後轉換成原碼,再轉換成十進位制呈現的。正數 原碼 反碼 補碼 ...