正确的惯用字节缓冲区读写

pm100

我有一个网兜。我需要离线阅读结构化协议。即我有

messagelength|type|value|type|value ...

其中messagelength是4个字节,键入一个字节,值取决于类型,...

我正在尝试解决这种麻烦的方式。我被io,bufio,encoding淹没了...我找不到正确的开始位置,也找不到样本。寻找ReadInt32,ReadByte,....

接下来的事情-我需要汇编一个答复-> WriteInt32,WriteString,WriteByte等。

尝试将python转换为go,python代码使用struct.unpack / pack

福兹

您可以使用包encoding / binary您唯一需要的功能是Read()Write()使用方法如下:

Read()函数具有以下签名:

func Read(r io.Reader, order ByteOrder, data interface{}) error

此功能r按顺序从中读取ByteOrder数据。data必须是一个指向固定大小值的指针(例如int32,一个字节或仅具有固定大小成员的结构)或此类值的切片。如果将指针传递给结构,则结构字段将在不填充的情况下被读入,空白字段(即名为_的字段)对应的数据将被读取并丢弃(填充的理想选择)。

对于您的特定问题,请声明一个与数据流的标头匹配的结构。

type Header struct {
    Length uint32
    Type   uint8
}

消耗数据包的标头(假定为大端):

var hdr Header
if err = Read(connection, binary.BigEndian, &hdr); err != nil {
    // deal with read error
}

切换类型字节:

switch hdr.Type {
// for each type, read into a type-specific struct
// ...
}

Write() 是相似的,但是写而不是读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

直接字节缓冲区

来自分类Dev

字节缓冲区NSData

来自分类Dev

缓冲区读写浮点数

来自分类Dev

缓冲区读写浮点数

来自分类Dev

如何使用 std::copy() 复制到指向通用字节缓冲区开头的指针?

来自分类Dev

在 Arduino 中使用字节缓冲区调用 curl 命令

来自分类Dev

如何使用字节缓冲区表示一个字节数组中的数据?

来自分类Dev

NodeJS缓冲区从字节读取位

来自分类Dev

协议缓冲区消息的字节序

来自分类Dev

PHP中的字节缓冲区?

来自分类Dev

内置追加与字节。缓冲区写入

来自分类Dev

转换NodeJS字节缓冲区

来自分类Dev

从字节缓冲区获取索引

来自分类Dev

用于处理对缓冲区的引用的惯用 Rust 方法

来自分类Dev

当缓冲区未满时,为什么字节缓冲区会给出缓冲区溢出异常

来自分类Dev

当缓冲区未满时,为什么字节缓冲区会给出缓冲区溢出异常

来自分类Dev

Java 映射字节缓冲区 - 缓冲区中的垃圾值

来自分类Dev

Poco从字节缓冲区解析XML文档

来自分类Dev

YUV缓冲区末尾的额外字节-RaspberryPi

来自分类Dev

Java中的并发读/写缓冲区字节[]

来自分类Dev

从jni返回的字节缓冲区是副本还是引用?

来自分类Dev

在node.js缓冲区中搜索字节模式

来自分类Dev

为什么此缓冲区指向不可寻址的字节?

来自分类Dev

如何不写比C缓冲区更多的字节?

来自分类Dev

JS从缓冲区读取字节

来自分类Dev

如何从字节缓冲区打印字符串

来自分类Dev

在node.js缓冲区中搜索字节模式

来自分类Dev

在c#中获取unicode缓冲区字节返回'??????'

来自分类Dev

着色器存储缓冲区对象:字节序?