Flutter中十六进制数组转换为十进制

概述

Flutter项目中使用蓝牙测量产品深度,需要将测量结果在App中显示。

详情

数据

[2, 0, 255, 0, 0, 12, 18, 1]
蓝牙测量数据为30.90,返回的数据为长度为8的16进制数组,如上图所示。其中第4、5、6、7为测量数据,其他数据为蓝牙协议的其他数据,现要求将[0,0,12,18]测量数据转换为30.90后显示在手机上。方法有很多,可以在Android/iOS将数据先转换为十进制后再传给flutter,本文则是在flutter端转换。

转换
  1. 将源数据转换为Uint8List
      Uint8List uint8list = Uint8List.fromList([2,0,255,0,0,12,18,1]);
  1. 截取测量数据
      Uint8List subList = Uint8List.sublistView(uint8list , 3, 7);

subList为[0,0,12,18]。

  1. 复制数组
     Uint8List resultList = Uint8List.fromList(subList);
  1. 转换为字节序列
     ByteData byteData = ByteData.view(resultList.buffer);
  1. 得到结果
     int result = byteData.getInt32(0);

最后得到结果为3090,将其进行单位换算得到30.90。

第三步复制数组好像多余,其实不然,若缺少第三步,最终结果则会得到一个不等于309的极大数据。
详细原因还在深究中…。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值