2014-04-29 34 views
2

可以說我有以下2字節數組,我從文件中讀取。強制去讀Uvarint的多個字節

bits := []byte{3, 223} 

我想解釋爲一個整數,這將是991(0b11從所述第一數目,0b11011111從第二)。我試圖用Go做這個並且遇到困難。

import "encoding/binary" 
import "fmt" 

bits := []byte{3, 223} 
fmt.Println(binary.Uvarint(bits)) 

這會讀取「3」然後停止。類似的二進制。讀...等。

我敢肯定,有一些成語,我在這裏失蹤,並希望你的幫助。

謝謝,凱文

回答

4

啊,我需要使用ByteOrder構造

import "encoding/binary" 
import "fmt" 

bits := []byte{3, 223} 
fmt.Println(binary.BigEndian.Uint16(bits)) 
+0

右鍵,Uvarint是一種編碼機制:https://developers.google.com/protocol-buffers/docs/編碼?csw = 1 你可以看到爲什麼3不讀取下一個字節,3是0000 0011,並且msb需要是1.(如果你正確讀取它,它不會是你想要的)。 :) – LinearZoetrope