我正在获取格式为 00-C6(十六进制)的值。当我尝试将其转换为 double (格式执行)时它会提示。怎么办?
public void check()
{
double low;
double high;
percentageCalculator(4095, 5, out low, out high);
Dictionary[] A_1 = {Max_1, Min_1};
for (int i = 0; i < A_1.Length; i++)
{
if ((Convert.ToDouble(A_1[i].CurrentValue) <= low) || ((Convert.ToDouble(A_1[i].CurrentValue) >= high))
{
Fault++;
}
}
}
最佳答案
假设 Hex
00-C6
string
表示 Integer
值(因为如果它表示 floating -point
值,如float
或double
,必须由4-byte
或8-byte
组成>),那么处理它的一种方法是拆分 Hex string
:
string hexString = "00-C6";
string[] hexes = hexString.Split('-');
然后像这样处理 hexes
中的每个元素:
int hex0 = Convert.ToInt32(hexes[0], 16);
int hex1 = Convert.ToInt32(hexes[1], 16);
如果十六进制是小端,那么你的double
值将是:
double d = hex0 << 8 + hex1;
如果它是 big endtion,你的 double
将是:
double d = hex1 << 8 + hex0;
这里的关键是要知道您可以使用 Convert.ToInt32
和第二个参数作为 16
将十六进制字符串表示形式转换为 Int
。
如果您愿意,可以将上述所有步骤合并为一个衬里。为了表述清晰,我特意将它们分解。
关于c# - 如何将格式 00-00 的十六进制转换为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196409/