我正在寻找实现这一目标的最简单方法:
num = 2376.75 => 0949(十六进制转换为2376.5到2377).Num也可能是负数。
我有非常丑陋的代码来做这件事,幸运的是对我有用:
val1 = 2376.75
int val = Convert.ToInt16( Math.Round(val1));
valStringLsb = ((byte)val ).ToString("X");
if (valStringLsb.Length == 1)
{
valStringLsb = "0" + valStringLsb;
}
string valStringmsb = ((byte)(si >> 8)).ToString("X");
int k = valStringmsb.Length;
if (k == 1)
{
valStringmsb = "0" + valStringmsb;
}
else
{
valStringmsb = ((byte)(val >> 8)).ToString("X").Equals("0") ? "00" : (((byte)(val >> 8)).ToString("X"));
}
valString += (valStringLsb + valStringmsb);
有没有简单的方法或API来实现这一目标? 我想这样做的原因是我想要2349值0949值而不是949值。
答案 0 :(得分:-1)
如果你想要简单,可以使用它:
Func<int, string> DecimalToHex = new Func<int, string>((input) =>
{
return Convert.ToString(input, 16).PadLeft(4, '0');
});
重要的部分是Convert
,因此您不必使用Func<>
方法。如果您想使用这种方法,那么您将必须提供您的舍入数字。你不能直接在这个函数中提供双精度。