gpt4 book ai didi

c# - 将 ushort 转换为字符串

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:55 26 4
gpt4 key购买 nike

我有一个由两个字节组成的 ushort。

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Y = bits 10-0, twos complement mantissa integer.

N = 位 15-11,二进制补整数。

X = Y * 2^N

我需要将 X 作为字符串输出。

这是我试过的:

    private string ConvertLinearToString(ushort data)
{
int N;
int Y;
int X;

N = Convert.ToInt16(GetBitRange((byte)data, 0, 5));
Y = Convert.ToInt16(GetBitRange((byte)data, 6, 11));
X = Convert.ToInt16(Y * Math.Pow(2, (double)N));

return Convert.ToString(result);
}

private byte GetBitRange(byte b, int offset, int count)
{
return Convert.ToByte((b >> offset) & ((1 << count) - 1));
}

我一直在尝试将 GetBitRange() 公式转换为使用 ushort 以及如何处理二进制补码。

最佳答案

您可以通过左移丢弃不需要的位,然后右移符号扩展来获得二进制补码行为。如果您使用 32 位整数实现 GetBitRange,如下所示:

private static int GetBitRange(int data, int offset, int count)
{
return data << offset >> (32 - count);
}

然后让 ushorts 在 ConvertLinearToString 中转换为 ints:

private static string ConvertLinearToString(ushort data)
{
var n = GetBitRange(data, 16, 5);
var y = GetBitRange(data, 21, 11);
var value = y * Math.Pow(2, n);
return value.ToString();
}

关于c# - 将 ushort 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com