3.记一个go语言字节数组和结构体转换:binary-obiect(obj的结构为byte)

本文探讨了Go语言中如何进行字节数组与结构体之间的转换,涉及HTTP协议解析、JSON和XML数据格式的处理。重点强调在修改函数外部数据时使用指针的重要性。
摘要由CSDN通过智能技术生成
//代码段一:message的占用空间大小固定
package main

import (
	"bytes"
	"encoding/binary"
	"fmt"
)

type message struct{
	id int32
	len int32
	data [4]byte //这个也可以是切片,但是如果是切片,需要解两次才能解成msg对象
}
type pack struct{

}

func(pck *pack)pack(data []byte) *message{
	msg := &message{}
	dataio := bytes.NewReader(data)


	//:对于data这个字节数组,从低字节开始读,把读到的字节放进msg.len的地址为首的空间,因为这个空间就4个字节(int32)故而会读走4个字节
//!!!!注意,binary.Read(XX,XX,XX3) XX3这个地址对应的是一块空间,这就是为啥message结构体的第三个属性data我限定空间大小的原因
	//:dataio流的指向在读完之后,会指向data的倒数第5个字节
	binary.Read(dataio,binary.LittleEndian,&msg.id)
	binary.Read(dataio,binary.LittleEndian,&msg.len)
	binary.Read(dataio,binary.LittleEndian,&msg.data)
	fmt.Println("----",msg)

	return msg
}
func(pck *pack)unpack(msg *message) []byte{

	databufio := bytes.NewBuffer([]byte{})

	binary.Write(databufio,binary.LittleEndian,msg.id)
	bina
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值