【问题标题】:Convert Uint32 into an array of 4 bytes将 Uint32 转换为 4 个字节的数组
【发布时间】:2019-10-18 17:58:14
【问题描述】:

如何将 Uint32 数字转换为 4 个字节(作为 Uint8List 或类似数字)。

上下文:我正在使用image 包,并调用getPixel(x,y) 函数,它返回一个Uint32。我想把它分成 rgba 颜色通道。

【问题讨论】:

  • package:image 中有帮助函数来获取像素的 rgba 分量。 getAlpha()getRed() 等。使用这些似乎比转换更简单。

标签: types dart type-conversion


【解决方案1】:

原来这样做的方法是将其转换为Uint32List,然后检索字节缓冲区并将其转换为您想要的类型。

int pixel = image.getPixel(x, y);
Uint32List list = new Uint32List.fromList([pixel]);
Uint8List byte_data = list.buffer.asUint8List();

【讨论】:

  • 另一个选项是:var bytes = ByteData(4); bytes.setUint32(0, pixel, Endian.little); var byte0 = bytes.getUint8(0);。或者你可以只做位操作:var byte0 = pixel & 0xff; var byte1 = (pixel >> 8) & 0xff; var byte2 = (pixel >> 16) & 0xff; var byte4 = pixel >> 24;.
猜你喜欢
  • 1970-01-01
  • 2011-09-23
  • 2021-08-20
  • 2022-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
相关资源
最近更新 更多