转换为48 位,小端

问题描述

我正在通过 UDP 与卡通信,使用我想要的数据发送消息并接收响应! 我在这两个参数的转换中遇到了一个小问题: Paremeters Argument

当我发送命令 0x22 来读取固件版本时,我得到了这个响应(索引 3,4,5),但鉴于我得到 ​​38 和 33 的结果,它们不是 yymmdd 格式... 0x22 Reponse

当我发送命令 0x21 读取 UI 版本时 我得到了这个结果,如何将其转换为 48 位小端 0x21 Réponse

解决方法

最简单的方法是:

long serialNumber = byte1 + (256L * byte2) + (256L*256L * byte3) + ... + (256L*256L*256L*256L*256L * byte6)

请注意,肯定可以通过位移来实现:

long serialNumber = ((long)byte1) | ((long)byte2 << 8) | ((long)byte3 << 16) | ... | ((long)byte6 << 40)

两者都基于小端数在内存中的表示方式。