golang packed structのサイズ取得
1551 ワード
ネットワークプロトコルでは、カスタムパッケージに遭遇する可能性があります.cに対応するのは
シングルバイトの位置合わせを保証するために、コンパイルオプションを追加できます.
残念なことに、golangには、このようなコンパイルオプションはありません.卑猥な参考になるパクリコードは以下の通りです.
一般的にbufferを取得した後、buffer[xxx:yyy]はデータを取得する
typedef struct _PackageHeader
{
int headerLen;
int timeStamp;
short cmd
};
シングルバイトの位置合わせを保証するために、コンパイルオプションを追加できます.
#pragma pack(1)
残念なことに、golangには、このようなコンパイルオプションはありません.卑猥な参考になるパクリコードは以下の通りです.
package main
import (
"encoding/binary"
"fmt"
)
type TestStruct struct {
a uint32
b int8
}
func main() {
var testObject TestStruct
size := binary.Size(testObject)
fmt.Println(size)
}
一般的にbufferを取得した後、buffer[xxx:yyy]はデータを取得する