如何在科学数字上使用位运算符?

本文关键字:运算符 数字上 | 更新日期: 2023-09-27 18:11:12

我的科学编号为10579019E063,我从我的温度传感器(俄勒冈传感器)接收到,我想对其进行解析。

我正在尝试转换为c#的python示例:

checksum = 0xE + 0xA + 0x4 + 0xC;
checksum -= (value & 0xF) * 0x10;
checksum -= 0xA;
value >>= 8;

值为10579019E063,正确解析:

double value = double.Parse("10579019E063");

但是现在Visual Studio抱怨它不能对value执行位操作,因为它不是int。

有人知道吗?我不能简单地投射它,我失去了精度?

如何在科学数字上使用位运算符?

位操作对于双精度型没有意义,因为它们的结构与整型非常不同。

如果你处理的是大于2^31的数,那么你可以使用long.

如果这还不够大,你需要在系统中切换到BigInteger。它实现了按位操作。

10579019E063太大了,所以你需要BigInteger