黄色土豆 发表于 2024-4-3 14:33

十六进制字节数组如何转换为java对象

本帖最后由 黄色土豆 于 2024-5-6 10:28 编辑

1、使用 PreparedStatement 增加数据;


2、第 1 个坐标传输的是int类型,222;
   第 2 个坐标传输的是BigDecimal类型,333;

3、下面看网络报文传输的格式;


4、这个 0xde 的十进制 222
      但是这个 333 是 BigDecimal 类型,所以在报文中显示为 0xc20422



问题:我想问的是,我通过网络报文包拿到 0xc20422 ,怎么转换为BigDecimal的java对象;

8taizi 发表于 2024-4-3 14:38

本帖最后由 8taizi 于 2024-4-3 14:39 编辑

float gasValFloat = ByteBuffer.wrap(val).order(ByteOrder.LITTLE_ENDIAN).getFloat();
DecimalFormat df = new DecimalFormat("#.###");
String gasVal = df.format(gasValFloat);BigDecimal bigDecimal = new BigDecimal(gasVal);需要注意是 否大小端转换

黄色土豆 发表于 2024-4-3 14:45

本帖最后由 黄色土豆 于 2024-4-3 14:46 编辑

8taizi 发表于 2024-4-3 14:38
float gasValFloat = ByteBuffer.wrap(val).order(ByteOrder.LITTLE_ENDIAN).getFloat();
DecimalFormat d ...
你好,val 并不是一个数值类型,看起来像是一个对象的十六进制;
也就是说,0xc20422 的十进制,结果并不是333,如果使用您那种方式,在.getFloat();就报错了

8taizi 发表于 2024-4-3 14:48

本帖最后由 8taizi 于 2024-4-3 14:49 编辑

黄色土豆 发表于 2024-4-3 14:45
你好,val 并不是一个数值类型,看起来像是一个对象的十六进制;
也就是说,0xc20422 的十进制,结果并 ...hutool工具包HexUtil.decodeHex("0xc20422 ");
byte[] val = new byte;

黄色土豆 发表于 2024-4-3 14:55

8taizi 发表于 2024-4-3 14:48
hutool工具包HexUtil.decodeHex("0xc20422 ");
byte[] val = new byte;

黄色土豆 发表于 2024-4-3 15:58

还有人吗

onesheeps 发表于 2024-4-3 16:01

感谢感谢
Text.

黄色土豆 发表于 2024-4-3 16:12

onesheeps 发表于 2024-4-3 16:01
感谢感谢
Text.

这是什么意思啊
页: [1]
查看完整版本: 十六进制字节数组如何转换为java对象