我在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
没有定义位移运算符。但是,由于double
也以 64 位表示,有没有办法将它们转换为二进制格式?
首先,Dart已经提供了一个ByteData类,所以在这种情况下,你可以避免使用位移操作,而是执行以下操作:
var byteData = ByteData(8);
byteData.setUint64(0, 256);
var bytes = byteData.buffer.asUint8List();
这将产生相同的字节列表。 鉴于您可以在ByteData
上使用setFloat64
方法来设置双精度,然后获取二进制表示形式。