C#将负int转换为11位

时间:2013-10-25 09:51:50

标签: c# binary bits

我需要在区间[-1024,1016]中转换数字。我正在转换为11位:

string s = Convert.ToString(value, 2); //Convert to binary in a string

int[] bits = s.PadLeft(11, '0') // Add 0's from left
                     .Select(c => int.Parse(c.ToString())) // convert each char to int
                     .ToArray(); // Convert IEnumerable from select to Array

这适用于有符号整数[0,1016]。但对于负整数,我得到32位结果。你知道如何将负整数转换为11位数组吗?

1 个答案:

答案 0 :(得分:2)

如果您只关心前11位,那么只需应用一个掩码:

string s = Convert.ToString(value & 2047, 2);

这会将值限制为最多11位 - 对于负数,所有“未使用”位将为1。

供参考:2047是二进制0000 ... 0000 0111 1111 1111,即最低有效11位的掩码。