Dart 将双精度表示转换为二进制表示
我在Dart 将双精度表示转换为二进制表示,dart,types,bit-manipulation,Dart,Types,Bit Manipulation,我在ints上使用位移位运算符来转换为二进制表示,如下所示: String toBinary(int i) { var bytes = Uint8List(8); bytes[0] = i >> 56; bytes[1] = i >> 48; bytes[2] = i >> 40; bytes[3] = i >> 32; bytes[4] = i >> 24; bytes[5] = i >> 16
int
s上使用位移位运算符来转换为二进制表示,如下所示:
String toBinary(int i) {
var bytes = Uint8List(8);
bytes[0] = i >> 56;
bytes[1] = i >> 48;
bytes[2] = i >> 40;
bytes[3] = i >> 32;
bytes[4] = i >> 24;
bytes[5] = i >> 16;
bytes[6] = i >> 8;
bytes[7] = i;
return String.fromCharCodes(bytes);
}
现在我需要对
double
s执行相同的操作,但是double
没有定义位移位运算符。但是,由于双精度也用64位表示,有没有办法将其转换为二进制格式?首先,Dart已经提供了一个类,因此在这种情况下,您可以避免使用位移位操作,而是执行以下操作:
var byteData=byteData(8);
byteData.setUint64(0256);
var bytes=byteData.buffer.asUint8List();
这将产生相同的字节列表。
假设您可以使用
ByteData
上的setFloat64
方法设置double,然后获取二进制表示 注意setInt64
/setFloat64
操作使用的字节顺序。默认值是big-endian。你应该决定是要那个还是要小恩迪安。