98 lines
2.1 KiB
Dart
98 lines
2.1 KiB
Dart
|
|
|
|
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<int> {
|
|
|
|
List<int> toLittle({int? value, int length = 4}){
|
|
|
|
List<int> 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;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|