C# 将负整数转换为 11 位

本文关键字:转换 整数 | 更新日期: 2023-09-27 18:36:54

我需要转换区间 [–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 位数组吗?

C# 将负整数转换为 11 位

如果您只关心前 11 位,那么只需应用蒙版:

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

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

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