将 Uint32 转换为 4 字节数组

Pri*_*six 2 types type-conversion dart

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

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

Pri*_*six 5

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

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

  • 另一个选项是:`var bytes = ByteData(4); bytes.setUint32(0, 像素, Endian.little); var byte0 = bytes.getUint8(0);`。或者你可以只进行位操作:`var byte0 = Pixel & 0xff; var byte1 = (像素 >> 8) & 0xff; var byte2 = (像素 >> 16) & 0xff; var byte4 = 像素 >> 24;`。 (2认同)