我正在一个项目中,我想对一个变量使用字节类型。
但是,当我尝试使用byte varName
或List<byte> varName
时,关键字byte
带下划线。
我想做这样的事情
List<byte> varName = [0, 2, 5 ,7, ..., ..., x];
但这不起作用。
答案 0 :(得分:0)
在Dart中,字节仅存储为int
。如果要使用特定int大小的列表,可以使用dart:typed_data
。
在您的情况下,可以是Uint8List
(对于8位无符号整数)或Int8List
(对于8位有符号整数)。
答案 1 :(得分:0)
您想要的是Uint8List
,而不是List<byte>
或List<int>
。
考虑一下:一个字节中有8位。因此,Java列表在每个项目中存储8位。同样,Uint8List每一项存储8位,每项存储一个字节。
使用提供的代码执行此操作的方式:
import 'dart:typed_data'; //Bundled with Dart
Uint8List example = Uint8List.fromList([0, 2, 5 ,7, ..., ..., x]); //Uint8List of bytes
您也可以从技术上使用List<int>
,但是按位操作变得更加棘手,因此我不推荐这样做。
答案 2 :(得分:0)
一个字节只是一个介于 0 到 255 之间的数字,因此可以像这样声明一个字节列表:
List<int> byteList = [0, 2, 5, 7, 42, 255];
然而,int
类型保存 64 位值,因此对于 8 位值来说有点矫枉过正。对于小列表没有关系,但对于大列表,Uint8List
类型更适合工作:
// import 'dart:typed_data';
Uint8List byteList = Uint8List.fromList([0, 2, 5, 7, 42, 255]);
Uint8List
是固定大小并保存无符号 8 位值。