将十六进制数转换为C#中的2字节字符串表示法

本文关键字:字节 字符串 表示 中的 十六进制数 转换 | 更新日期: 2023-09-27 18:30:10

我正在寻找实现这一目标的最简单方法:

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可以实现这一点?我想这样做的原因是我想要0949值,而不是2377的949值。

将十六进制数转换为C#中的2字节字符串表示法

如果你想要简单,你可以使用这个:

Func<int, string> DecimalToHex = new Func<int, string>((input) => 
{
    return Convert.ToString(input, 16).PadLeft(4, '0');
});

重要的部分是Convert,因此您不必使用Func<>方法。如果你想使用这种方法,那么你必须提供你的四舍五入数字。不能直接向该函数提供double。