栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 自定义字节转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 自定义字节转换

其实java开发中, 将对象转为字节或者字节转对象一般来说很少使用的。上层协议一般使用的是文本形式,不如xml, json什么的。下面的场景java自定义字节和对象直接的转换都可以参考的。

一般来说 需要自定义转换就是涉及到跨语言。特别是物联网或者和单片机进行通讯, 此种场景一般采用私有协议。 C语言就很简单。 直接进行转换就可以了。 但是java就不行了。 需要使用bytebuffer 根据协议一个一个读取并赋值到对象中。

上面的方式需要注意的太多了。 大小端, 空值, 字节对齐等等。

最近发现一个比较好用的框架,可以帮我一键再 字节和对象之间转换。 无论字节转对象还是对象转字节都想json一样方便。

1. 引入jar包


  io.github.misterchangray
  magic-byte
  2.0.1

2. 定义和结构体映射的对象

在这里指定了每个字段的大小, 和顺序。其他数据类型和大小参考文档

@MagicClass(byteOrder = ByteOrder.BIG_ENDIAN)
public class Teacher {
    // 4 byte
    @MagicField(order = 1)
    private int id;
    // 10 byte
    @MagicField(order = 2, size = 10)
    private String name;
   // 4 byte
    @MagicField(order = 3)
    private int phoneSize;

    // getter and setter
}

3. 使用工具类进行转换,对象转字节。

    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.setName("zhang3");
        teacher.setId(38);
        teacher.setPhoneSize(55);

        byte[] unpack = MagicByte.unpackToByte(teacher);

    }

4. 字节转对象

    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.setName("zhang3");
        teacher.setId(38);
        teacher.setPhoneSize(55);

        byte[] unpack = MagicByte.unpackToByte(teacher);
        
        Teacher teacher1 = MagicByte.pack(unpack, Teacher.class);

    }

我感觉这样可以省不少代码量【手动狗头】

这里贴下GITHUB链接。 方便大家查看文档。

GitHub - MisterChangRay/magic-byte: faster convert byte to java object toolhttps://github.com/MisterChangRay/magic-byte

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号