2

I want to convert int32 into bytes array.

specifically i want to convert 477 to bytes array like [el1,el2,el3,el4] i tried utf8.encode(477.toString()); and got [52, 55, 55]

1 Answers1

14

The easiest approach would be to create a byte list (Uint8list), then view the underlying buffer as a 32-bit integer list (Int32List) and store the integer there. That will allow you to read back the bytes.

import "dart:typed_data";

Uint8List int32bytes(int value) =>
    Uint8List(4)..buffer.asInt32List()[0] = value;

This will store the integer using the platform's byte ordering. If you want a particular byte ordering, you can use a ByteData view instead, which allows writing bytes in any endianness and position:

Uint8List int32BigEndianBytes(int value) =>
    Uint8List(4)..buffer.asByteData().setInt32(0, value, Endian.big);
DirtyNative
  • 2,261
  • 2
  • 23
  • 48
lrn
  • 51,374
  • 4
  • 81
  • 97