【发布时间】:2022-07-22 18:06:23
【问题描述】:
我有这个函数可以将十六进制转换为双精度。这些值是一些坐标,因此纬度应该是正数,经度应该是负数。
类似这样的:
41.43757591162915,-8.418569400003188
对于纬度工作正常,但在尝试转换经度时返回错误。
预期值:-8.418569400003188 转换自 C020D67F4DBDF8F5
我读到了这个错误,似乎是因为该值超出了范围的限制。
double convert(String hexString) =>
(ByteData(8)..setUint64(0, int.parse(hexString, radix: 16)))
.getFloat64(0);
void _processHexDouble(hexString, _regexVar, String name, String _toSplit) {
final a = _regexVar.firstMatch(hexString);
final _matchedRegex = a?.group(0); //A9C020D67F4DBDF8F5
// var number = 0.0;
try {
if (_matchedRegex != null) {
var _splitRegex = _matchedRegex.split(_toSplit);
print('$name -> ${convert(_splitRegex[1])}'); //C020D67F4DBDF8F5
// print('$name -> ${number}');
_logResponses =
"${_logResponses} $name -> ${convert(_splitRegex[1])} \n";
}
} on Exception catch (e) {
print(e);
}
}
如何在不触发此错误的情况下解决此问题?有没有办法限制转换时值的大小,使其小于限制?
【问题讨论】:
标签: flutter dart integer hex double