在Dart中向Uint8投射int



我正在使用ffityed_dataDart库,这行代码一直遇到错误

Uint8 START_OF_HEADER = 1 as Uint8;

我的错误:

类型"int"不是类型强制转换中类型"Uint8"的子类型

我做错了什么?另一件奇怪的事情是,我可以使用这些库编写这行代码,我的IDE将进行编译,并且不会抛出错误,也就是说,直到你使用了这行代码。我正在使用Intellij版本2019.2.4

您正试图在Dart中创建Uint8的实例,但这是不可能的——该类型只是一个标记。

/// [Uint8] is not constructible in the Dart code and serves purely as marker in
/// type signatures.

例如,您只需在typedefs中使用这些标记来描述一个C函数,它接受两个有符号的32位int并返回有符号的32bit int:

typedef native_sum_func = Int32 Function(Int32 a, Int32 b);

这将与一个等效的类似Dart的typedef 配对

typedef NativeSum = int Function(int a, int b);

Dart-ffi负责将ab从Dart-int转换为32位Cint,并将返回值转换回Dart-int。

请注意,您可以创建指向这些C类型的指针,例如使用package:ffi中的allocate方法的Pointer<Uint8>

相关内容

  • 没有找到相关文章

最新更新