Mam dane binarne przechowywane w Uint8List i chciałbym przeczytać 16-bitowy int z tej listy. Czy są jakieś metody ułatwiające pomoc w tym zakresie?Jak mogę odczytać 16-bitowy int z Uint8List w Dart?
(parafrazując z rozmowy miałem z kolegą)
Mam dane binarne przechowywane w Uint8List i chciałbym przeczytać 16-bitowy int z tej listy. Czy są jakieś metody ułatwiające pomoc w tym zakresie?Jak mogę odczytać 16-bitowy int z Uint8List w Dart?
(parafrazując z rozmowy miałem z kolegą)
Można użyć klasy ByteData:
var buffer = new Uint8List(8).buffer;
var bytes = new ByteData.view(buffer);
bytes.getUint16(offset);
(parafrazą z odpowiedzi udzielonej przez kolegę)
Jak powiedział Seth , potrzebujesz widoku ByteData danych binarnych Uint8List.
Jest nieco lepiej używać ByteBuffer.asByteData()
. Jest to trochę bardziej zwięzłe i działa lepiej podczas testowania. Jeśli masz fałszywe Uint8List i fałszywe ByteBuffer, new ByteData.view(buffer)
zakończy się niepowodzeniem, ale można wprowadzić fałszywą metodę ByteData dla ByteBuffer's asByteData()
.
var bytes = myUint8List.buffer.asByteData();
bytes.getUint16(offset);
Dzięki doskonałej dalekowzroczności mielibyśmy tylko asByteData() i również nie nadmiarowej konstruktora ByteData.view publicznego.