作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个设置,可以通过网络接收数据并将其序列化到我的结构中。它工作正常,但现在我需要将数据序列化到 slice 缓冲区以通过网络发送它。
我试图避免分配超过需要的空间,所以我已经设置了一个缓冲区,我想为我的所有序列化写入该缓冲区。但我不确定该怎么做。
我的设置是这样的:
recieveBuffer := make([]byte, 1500)
header := recieveBuffer[0:1]
message := recieveBuffer[1:]
因此,我尝试将结构中的字段写入message
,并将所有字段的总字节数作为header
的值。
这就是我反序列化结构的方式:
// Deserialize ...
func (userSession *UserSession) Deserialize(message []byte) {
userSession.UID = int64(binary.LittleEndian.Uint32(message[0:4]))
userSession.UUID = string(message[4:40])
userSession.Username = string(message[40:])
}
然而,我真的不知道如何做相反的事情。是否可以在复制到 message
之前不为每个要序列化的字段创建缓冲区?
最佳答案
给定预分配缓冲区 buf
,您可以像这样反转过程:
buf[0] = byte(40+len(userSession.Username))
binary.LittleEndian.PutUint32(buf[1:], uint32(int32(userSession.UID)))
copy(buf[5:41], userSession.UUID)
copy(buf[41:], userSession.Username)
关于go - 序列化结构字段以预先存在 byte slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47881732/
问了这个问题How to reach CSS zen? ,我现在明白我遇到的问题大多与定位有关。我发现一些文章说 CSS 作为布局系统并不总是足够好。 http://echochamber.me/vi
我是一名优秀的程序员,十分优秀!