如何声明字节列表?

时间:2019-11-08 19:39:40

标签: flutter dart

我正在一个项目中,我想对一个变量使用字节类型。 但是,当我尝试使用byte varNameList<byte> varName时,关键字byte带下划线。 我想做这样的事情

  

List<byte> varName = [0, 2, 5 ,7, ..., ..., x];

但这不起作用。

3 个答案:

答案 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 位值。