import 'dart:convert'; import 'dart:typed_data'; /// 添加小端序头 extension MapLittle on Map { /// 在转成 Uint8List 的数据前面添加 小端序 Uint8List toLittle({dynamic value = 0, int length = 4}){ /// map 转 json String mapJson = jsonEncode(this); /// json 转 Uint8List final mapData = utf8.encode(mapJson); /// 添加小端序 final data = mapData.toLittle(value: value,length: length); return data; } } extension ListIntLittle on List { List toLittle({int? value, int length = 4}){ List ret = []; /// 初始化 定义数据长度 final little = ByteData(4); /// 设置小端序数据 little.setInt32(0, value ?? this.length, Endian.little); for (int i = 0; i < little.lengthInBytes; i++) { ret.add(little.getUint8(i)); } ret.addAll(this); return ret; } } extension Uint8ListLittle on Uint8List { /// 在转成 Uint8List 的数据前面添加 小端序 Uint8List toLittle({dynamic value = 0, int length = 4}){ var mapData = this; /// 初始化 定义数据长度 final little = ByteData(length); /// 设置小端序数据 little.setInt32(0, value,Endian.little); /// 小端序 转 Uint8List var littleData = little.buffer.asUint8List(); /// 初始化 Uint8List Uint8List data = Uint8List(littleData.length + mapData.length ); /// 组装 map Uint8List 和 小端序 Uint8List data.setRange(0, littleData.length, littleData); data.setRange(littleData.length, mapData.length + littleData.length, mapData); /// 返回组合数据 return data; } // Uint8List转int 从前4位转小端序 int? fromLittle({int start = 0,int length = 4}) { if (this.length < length){ print('转小端序的数据长度不足'); return null; } final littleData = sublist(start,start + length); // 创建ByteData ByteData byteData = littleData.buffer.asByteData(); // 读取小端序的32位整数 int little = byteData.getInt32(0, Endian.little); return little; } }