arrays - Dart:将 int 转换为 Uint8List
问题描述
我正在尝试为我通过套接字流式传输的有效负载添加前缀,到目前为止,我能够让它工作的唯一方法是:
Uint8List payload = getPayloadSomehow();
final lBytes = ByteData(4)..setUint32(0, payload.length);
final prefix = lBytes.buffer.asUint8List();
final prefixedPayload = []..addAll(prefix)..addAll(payload);
创建一个ByteData
并用长度填充它,然后将缓冲区提取为一个Uint8List
感觉非常迂回。但是我还没有找到一种更简洁的方法来进行转换和前缀。
如果有人能指出更好的解决方案,我将不胜感激,谢谢。
解决方案
怎么样:
var payload = getPayloadSomehow();
var prefixed = Uint8List(payload.length + 4);
prefixed.buffer.asUint32List(0, 1)[0] = payload.length;
prefixed.setRange(4, prefixed.length, payload);
推荐阅读
- javascript - Javascript倒数计时器无法正常工作
- swift - “可选类型'(() - > Bool)?' 不能用作布尔值;在委托函数调用中测试 '!= nil'
- c# - 这是解析函数参数的有效方法吗?
- python - 将变量传递给函数 Python
- swift - 依赖注入:静态方法和参数
- amazon-web-services - 如何在现有 AWS 存储桶中创建多个文件夹
- javascript - 防止包含数字的 Javascript 字符串丢弃零
- wpf - 如何找到使用 TextChanged 添加的文本
- ibm-mq - 无法将应用程序连接到队列管理器,出现错误 JMSWMQ2013
- asp.net-mvc - 如何在 Visual Studio 2017 中使用 ASP.NET Core v2 基于现有 SQL 表创建模型