Int與Byte互轉
Int與Byte互轉
結構
一個Int等於4Byte,一個Byte等於8個Bit
10的寫法
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 進位 |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 10 |
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 2 |
位元的排列
左邊的稱為高位元
右邊的稱為低位元
記成左邊的數子比較大,如我們常用的十進位就知道,越左邊 位數越大
思考如何轉換
| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
一個byte最大值是255
如果今天數字是大於255,如256要如何用byte表示呢
256用一個byte肯定是接不了,至少要兩個比較合理
這邊要對256取餘數,為什麼是256不是255
上面的表顯示的256的位元狀態,前面八個bit代表一個byte
當你對256取餘數就可以取得0~7bit(一個byte)的值
然後再右移八位就可以繼續對256取餘數
直到int小於等於0的時候就停止
用可變長度的資料結構去儲存資料是滿好用的方法,如隊列(queue)
使用隊列來處理int to byte
256對256取餘數是0,0加入對列,256要右移8(就是把高位元往低位元移動8),256變成1 1對256取餘數是1,1加入對列,1要右移8,1變成0

使用隊列來處理byte to int
現在對列是[0, 1] 要如何轉回256
int to byte是右移,這邊就是要左移了
左移的位數從0開始,每位移完一次就+8,直到把全部的對列執行完為止
範例程式
result = 0
exp = 0
for v in arr:
result += v << exp
exp += 8
return result