You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Dart中如何转换十六进制格式并将值写入ByteData对象

Dart 十六进制转换及ByteData赋值方案

1. 十六进制值转换

你写的var i=23FF在Dart中不是合法语法,Dart的十六进制字面量必须以0x前缀开头。如果你的原始值是字符串格式的23FF,可以按以下方式转换:

  • 字符串转十六进制数值
    用int.parse指定进制为16即可,转换后得到的int值和直接写0x23FF完全等价:
    String rawHex = "23FF";
    int i = int.parse(rawHex, radix: 16); // 等价于 int i = 0x23FF;
    
  • 数值转0x开头的十六进制字符串(仅需显示时使用)
    String hexStr = "0x${i.toRadixString(16).toUpperCase()}"; // 输出结果为 0x23FF
    

2. 给ByteData设置十六进制值

你给出的示例写法本身就是合法可用的:Dart中0x开头的十六进制字面量本身就是标准int类型,可以直接传入setUint8/setUint16/setUint32等方法的参数中。
如果是之前转换得到的十六进制数值,也可以直接传入,完整示例如下:

// 转换得到十六进制数值
String rawHex = "23FF";
int hexValue = int.parse(rawHex, radix: 16);

// 初始化ByteData
ByteData mssg = ByteData(12);
// 直接传入十六进制数值即可,第三个可选参数指定端序,默认是大端Endian.big
mssg.setUint16(5, hexValue); 
// 小端序写法示例
// mssg.setUint16(5, hexValue, Endian.little);

注意:赋值时要匹配方法的数值范围:uint8对应0x000xFF,uint16对应0x00000xFFFF,uint32对应0x00000000~0xFFFFFFFF,超出范围会抛出异常。

内容的提问来源于stack exchange,提问作者preeti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:54:04