假如拿到了乙個位元組切片test1 =
package main
import (
"fmt"
"reflect"
)func main()
fmt.println(test1)
test2 := string(test1)
fmt.println(test2)
fmt.println(reflect.typeof(test1[0]))
return
}
列印的結果
[97 98 99 100 11]
abcd
uint8
這其實就是ascii碼值與英文ascii字元的互轉。ascii的碼值本質上就是uint8型別。 留意一下11對應的是垂直製表符(控制字元), 因此列印出來是看起來是亂碼的 「」這個。
對於ascii碼表,應該能簡單的記憶一些常用的,有時候比較方便。 參考:
這篇部落格主要是記錄今天遇到的乙個bug: 在用sring對位元組序列進行強轉時,報了乙個不是uint8的錯誤。
我的解釋:
位元組 --> 字串
的轉換過程,本質上是位元組解碼的過程。 這bug的原因應該是該位元組不是純粹的uint8型別,它不是ascii碼,它有可能是utf-8的編碼或者別的如gbk。
因此應該先確定是哪種編碼,指定編碼的型別,然後再選擇轉換的方式。
位元組對齊 8位元組對齊
參考博文 參考1 參考2 參考3 在記憶體管理中經常使用位元組對齊來管理分配的記憶體。1 原理 2 演算法 2.1unsigned intcalc align unsigned int n,unsigned align 2.2 更好的演算法 unsigned intcalc align unsign...
測試8位元組對齊
對十六進製制和按位操作,總是糊塗,所以實際測試下 我的理解,不一定全部正確 32位的系統上,都以32位系統為例 乙個int型是4個位元組,所以0x3是 0x0003,四個位元組,其中3代表乙個位元組 8個二進位制位 00000011,0就是00000000了。乙個指標也是4個位元組,這個程式裡頭列印...
8位位元組對齊演算法
參考文章 8bit對齊演算法 void testalign 1byte 1位元組對齊 unsigned int align8bit unsigned int n 2byte 2位元組對齊 unsigned int align16bit unsigned int n 4byte 4位元組對齊 unsi...