将双精度转换为二进制表示



我在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;
bytes[6] = i >> 8;
bytes[7] = i;
return String.fromCharCodes(bytes);
}

现在我需要对doubles 做同样的事情,但double没有定义位移运算符。但是,由于double也以 64 位表示,有没有办法将它们转换为二进制格式?

首先,Dart已经提供了一个ByteData类,所以在这种情况下,你可以避免使用位移操作,而是执行以下操作:

var byteData = ByteData(8);
byteData.setUint64(0, 256);
var bytes = byteData.buffer.asUint8List();

这将产生相同的字节列表。 鉴于您可以在ByteData上使用setFloat64方法来设置双精度,然后获取二进制表示形式。

最新更新