2 回答
TA贡献1788条经验 获得超4个赞
您可以通过以下两种方式执行此操作:
通用内联;或者
自定义类型
通用的
利用Write任何io.Writer类似的本机方法os.Stdout:
w := os.Stdout // any io.Writer
x := uint32(197121) // any bit-shift capable type, uint64 etc.
// little-endian order
w.Write([]byte{
byte(x),
byte(x >> 8),
byte(x >> 16),
})
https://play.golang.org/p/9WSUpX8zYcw
go run ./main.go | xxd
00000000: 0102 03
自定义类型
定义自定义类型和方法并匹配io.WriterTo接口:
type int24 int32
func (x int24) WriteTo(w io.Writer) (int64, error) {
n, err := w.Write([]byte{
byte(x),
byte(x >> 8),
byte(x >> 16),
})
return int64(n), err
}
要使用:
for _, v := range []int24{
197121, // 01 02 03
513, // 01 02 00
1, // 01 00 00
} {
v.WriteTo(os.Stdout)
}
https://play.golang.org/p/IdfM6s_Ytpn
% go run ./custom.go |xxd
00000000: 0102 0301 0200 0100 00
- 2 回答
- 0 关注
- 116 浏览
添加回答
举报