gpt4 book ai didi

flutter - 当int通常为32或64位时, “int”如何表示一个字节(8位)?

转载 作者:行者123 更新时间:2023-12-03 04:09:26 26 4
gpt4 key购买 nike

我很好奇在Dart编程语言中int类型表示一个字节。我很困惑,因为在Dart非常相似的Java中,int是32位。
我问是因为领先的flutter ble库Flutter Blue似乎在处理ble字节时处理了List<int>
但是根据官方文档:
https://flutter.dev/docs/development/platform-integration/platform-channels#codec
使用了Uint8List,这才使byte []等效。
似乎那些无符号的8位整数刚刚被转换为Uint8List-> List<int>的32位有符号的int?即十进制2从00000010转换为00000000000000000000000000000010吗?
如果要写一个字节流,这似乎有影响。需要将int转换为Uint8

最佳答案

Dart int类型是64位的二进制补码-除为Web编译时,它是没有小数部分的64位浮点数(JavaScript数具有整数值)。
这些值在内部如何表示取决于优化情况,如果运行时系统确定该值适合,则可以将它们表示为较小的值。这是一种优化,您将无法分辨出差异。
“字节”值是0..255范围内的整数。您显然可以将字节值存储在int中。
存储多个字节的最有效方法是Uint8List,它实现了List<int>。它将每个元素存储为一个八位字节。
当您从Unit8List中读取值时,其字节值由int表示。当您将int存储在Uint8List中时,仅存储低8位。
因此,它可以扩展读取和截断写入以在八位字节和64位值之间移动值。

关于flutter - 当int通常为32或64位时, “int”如何表示一个字节(8位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64018460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com