-1

我正在尝试将负数转换为 8 位二进制形式。这是我的代码:-

 UTF8Encoding Bencoding = new UTF8Encoding();
 int a=-3;
 byte[] Bbuf = Bencoding.GetBytes(a.ToString());

 StringBuilder Binfobinary = new StringBuilder();
 foreach (byte b in Bbuf)
 {
     string str = Convert.ToString(b, 2);
     Binfobinary.Append(str);
 }

它给了我这样的答案 101101110011

4

2 回答 2

4

如果你想要一个 8 位表示,你最好的办法是从 32 位表示的结果中去掉额外的 24 位,Convert.ToString(int, int)因为没有Convert.ToString(sbyte, int).

string str = Convert.ToString(-3, 2);
str = str.Substring(Math.Max(str.Length - 8, 0)).PadLeft(8, '0');

当然,如果你想要一个 16 位的表示,你可以简单地将整数转换为 ashort以使用Convert.ToString(short, int) 重载:

string str = Convert.ToString((short)-3, 2).PadLeft(16, '0');
于 2012-12-11T10:02:52.513 回答
1
var str = Convert.ToString(-3, 2)
于 2012-12-11T09:58:31.250 回答