BaseValue constructor
BaseValue(
- int size,
- dynamic value, {
- dynamic tag,
Implementation
BaseValue(this.size, this.value, {dynamic tag})
: _tag = [tag] {
if (value is String) {
try {
if(size == 8) {
value = BigInt.parse(value);
} else {
value = int.parse(value);
}
} catch (_) {
tryHexString(value);
if(size == 8) {
value = BigInt.parse(value, radix: 16);
} else {
value = int.parse(value, radix: 16);
}
}
} else if (value is int && size == 8) {
value = BigInt.from(value).toUnsigned(64);
}
// check bounds
var bitSize = size * 8;
var upperBound = size == 8 ? BigInt.parse('18446744073709551615').toUnsigned(64) : bitmask(bitSize);
var lowerBound = size == 8 ? BigInt.from(0).toUnsigned(64) : 0;
if (value < lowerBound || value > upperBound) {
var valueRangeMessage = '$value must be in range [$lowerBound, $upperBound]';
throw ArgumentError('$valueRangeMessage for $size bytes');
}
}