Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 将双精度表示转换为二进制表示_Dart_Types_Bit Manipulation - Fatal编程技术网

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。你应该决定是要那个还是要小恩迪安。