为了账号安全,请及时绑定邮箱和手机立即绑定

小端或大端:具有相同代码的二进制编码

小端或大端:具有相同代码的二进制编码

Go
狐的传说 2022-07-25 10:51:14
我有一个纯 TCP 服务器,我的客户端发送一个字节:1= 小端编码,0= 大端编码。我做了类似的事情(只有这里有趣的部分)reader := bufio.NewReader(conn)otherIsLittleEndian, err := reader.ReadByte()if err != nil {    panic(err)}var encoding = struct {}{}if otherIsLittleEndian == 1 {    encoding = binary.LittleEndian} else {    encoding = binary.BigEndian}然后这是不起作用的部分:rnd := rand.Uint64()buf := new(bytes.Buffer)_ = binary.Write(buf, encoding, rnd)  // not working最后一行不起作用,但如果我用以下代码替换它,它会起作用,但我不想为每个Write()调用都这样做:if otherIsLittleEndian == 1 {    _ = binary.Write(buf, binary.LittleEndian, rnd)} else {    _ = binary.Write(buf, binary.BigEndian, rnd)}解决办法是什么?
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

将编码变量声明为 type binary.ByteOrder。


var encoding binary.ByteOrder

if otherIsLittleEndian == 1 {

    encoding = binary.LittleEndian

} else {

    encoding = binary.BigEndian

}

正如错误消息告诉您的那样, to 的参数binary.Write是 a binary.ByteOrder,而不是 a struct{}。


和值实现接口(binary.LittleEndian文档)。binary.BigEndianbinary.ByteOrder


查看完整回答
反对 回复 2022-07-25
  • 1 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号