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

Dart中与struct.pack('<I', int)功能等效的函数是什么?

Dart 中实现等效 pack 字节打包功能的方法

Dart 原生提供了完全等效的字节打包能力,无需引入第三方依赖,核心依赖标准库的 dart:typed_data 模块即可实现。

你问题中给出的 struct.pack('<I', 5311) 功能是将整数 5311 按*小端序(little-endian)*打包为4字节无符号32位整数,对应 Dart 的实现代码如下:

import 'dart:typed_data';

void main() {
  // 申请4字节的内存缓冲区,匹配<I>格式需要的4字节长度
  final byteData = ByteData(4);
  // 写入32位无符号整数,指定小端序
  byteData.setUint32(0, 5311, Endian.little);
  
  // 转换为字节列表,输出和示例完全一致的 [0, 0, 20, 191]
  final result = byteData.buffer.asUint8List();
  print(result); 
}

执行上述代码输出的结果和你给出的Python、JS执行结果完全一致。

常用格式符对应实现

针对Python struct模块的常用格式符,Dart都有对应的实现方法:

  • 1字节无符号整型(格式符B):调用setUint8(偏移量, 值)
  • 2字节小端无符号短整型(格式符<H):调用setUint16(偏移量, 值, Endian.little)
  • 4字节小端有符号整型(格式符<i):调用setInt32(偏移量, 值, Endian.little)
  • 8字节小端双精度浮点型(格式符<d):调用setFloat64(偏移量, 值, Endian.little)

如果需要和Python的pack方法一样直接传入格式字符串批量打包,可以基于ByteData自行封装一层工具函数,完全可以实现和其他语言pack方法一致的调用体验。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:42:03