encodedValueToBytes method
Uint8List
encodedValueToBytes(
- dynamic encodedValue, {
- Endian endian = Endian.little,
})
Implementation
Uint8List encodedValueToBytes(dynamic encodedValue,
{Endian endian = Endian.little}) {
if (encodedValue == null) {
throw ArgumentError.value(encodedValue, 'encodedValue');
}
if (type == BaseType.STRING) {
final encodedBytes = utf8.encode(encodedValue);
final bb = BytesBuilder()
..add(encodedBytes)
..addByte(0);
return bb.toBytes();
}
final byteData = ByteData(type.size);
switch (type) {
case BaseType.ENUM:
byteData.setUint8(0, encodedValue);
break;
case BaseType.UINT8:
case BaseType.UINT8Z:
case BaseType.BYTE:
byteData.setUint8(0, encodedValue);
break;
case BaseType.SINT8:
byteData.setInt8(0, encodedValue);
break;
case BaseType.SINT16:
byteData.setInt16(0, encodedValue, endian);
break;
case BaseType.UINT16:
case BaseType.UINT16Z:
byteData.setUint16(0, encodedValue, endian);
break;
case BaseType.SINT32:
byteData.setInt32(0, encodedValue, endian);
break;
case BaseType.UINT32:
case BaseType.UINT32Z:
byteData.setUint32(0, encodedValue, endian);
break;
case BaseType.FLOAT32:
if (encodedValue == null) {
byteData.setUint32(0, type.invalidRawValue, endian);
} else {
byteData.setFloat32(0, encodedValue, endian);
}
break;
case BaseType.FLOAT64:
if (encodedValue == null) {
byteData.setUint64(0, type.invalidRawValue, endian);
} else {
byteData.setFloat64(0, encodedValue, endian);
}
break;
case BaseType.STRING:
break;
case BaseType.UINT64:
case BaseType.UINT64Z:
case BaseType.SINT64:
encodedValue as BigInt;
final stringValue = encodedValue.toRadixString(16);
final int64 = Int64.parseRadix(stringValue, 16);
var bytes = int64.toBytes();
if (endian == Endian.big) {
bytes = bytes.reversed.toList();
}
return Uint8List.fromList(bytes);
}
return byteData.buffer.asUint8List();
}