【发布时间】:2022-06-19 17:34:25
【问题描述】:
我有以下代码。我要做的是解析 BLE 服务数据以获取 EddyStone Namespace 和 InstanceID。是将字节数据解析成字符串。
import 'dart:typed_data';
import 'dart:convert';
main(){
var list = [0, 2, 46, 80, 128, 106, 163, 130, 85, 170, 217, 250, 42, 21, 78, 45, 0, 85, 0, 0];
Uint8List serviceData = Uint8List.fromList(list);
ByteData data = ByteData.sublistView(serviceData, 0, 10); //for namespace 10 byte
var abc = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
var dta = utf8.decode(abc);
print(dta);
}
我在 utf8.decode(abc) 上遇到以下错误;
Unhandled Exception: FormatException: Unexpected extension byte (at offset 4)
谁能告诉我哪里错了?
【问题讨论】:
-
为什么要将数据转换成字符串?这显然不是文本数据,所以没有任何意义
-
@SamiKuhmonen,我只想解析它们以获取 Eddystone 命名空间和实例 ID,如此处所述 github.com/google/eddystone/tree/master/eddystone-uid
-
因此您不应该将任何内容转换为字符串。该链接解释了数据,而不是文本。
-
@SamiKuhmonen 你能解释一下吗?我实际上是飞镖新手。
-
这和飞镖没什么关系。你有数据和解释它是什么。如果你想要命名空间,它是文档中指示的字节。无需字符串或转换