Go中的binary包實現(xiàn)了簡單的數(shù)字與字節(jié)序列的轉換以及變長值的編解碼
專注于為中小企業(yè)提供網站制作、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)巴彥免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。
package main
import ( "fmt" "bytes" "encoding/binary" ) func main(){ n := 0x12345678 bytesBuffer := bytes.NewBuffer([]byte{}) //BigEndian 大端順序存儲 LittleEndian小端順序存儲 binary.Write(bytesBuffer, binary.BigEndian, int32(n)) data:=bytesBuffer.Bytes() fmt.Printf("[0]: %#x addr:%#x\n",data[0],data[0]) fmt.Printf("[0]: %#x addr:%#x\n",data[1],data[1]) fmt.Printf("[0]: %#x addr:%#x\n",data[2],data[2]) fmt.Printf("[0]: %#x addr:%#x\n",data[3],data[3]) }
輸出
[0]: 0x12 addr:0xc042010248 [1]: 0x34 addr:0xc042010249 [2]: 0x56 addr:0xc04201024a [3]: 0x78 addr:0xc04201024b
也可以使用下面的方式
n := 0x12345678 var data []byte = make([]byte,4) //操作的都是無符號整型 binary.BigEndian.PutUint32(data,uint32(n))
可以使用下面的方式判斷當前系統(tǒng)的字節(jié)序類型
const INT_SIZE int = int(unsafe.Sizeof(0))
//判斷我們系統(tǒng)中的字節(jié)序類型 func systemEdian() { var i int = 0x1 bs := (*[INT_SIZE]byte)(unsafe.Pointer(i)) if bs[0] == 0 { fmt.Println("system edian is little endian") } else { fmt.Println("system edian is big endian") } }
將golangbyte轉換為字符串:
package main
import (
"fmt"
)
func main() {
data := [4]byte{0x31, 0x32, 0x33, 0x34}
str := string(data[:])
fmt.Println(str)
}
其實你的問題在與最后一段是[]byte
如果直接轉json出來的數(shù)據(jù)是一個base64的字符串
所以你要做的應該是把最后的這個[]byte按字符串直接輸出。
自己手動轉一下吧。