我需要将int转换为bin并使用额外的位。
string aaa = Convert.ToString(3, 2);
它会返回11
,但我需要0011
或00000011
。
怎么做?
答案 0 :(得分:46)
11
是3
的{{3}}。该值的二进制表示为2
位。
3 = 2 0 * 1 + 2 1 * 1
您可以使用binary representation方法添加这些零。
Convert.ToString(3, 2).PadLeft(4, '0') // 0011
Convert.ToString(3, 2).PadLeft(8, '0') // 00000011
答案 1 :(得分:1)
Soner回答的问题:
Convert.ToString(3, 2).PadLeft(4, '0')
只想添加只是为了让你知道。 int参数是字符串和char参数的字符总数,这些字符将被添加以填充字符串中缺少的空格。在你的例子中,你想要输出0011,它是4个字符,需要0,因此你使用4作为int参数,在char中使用'0'。
答案 2 :(得分:1)
我创建了一种动态写入前导零的方法
public static string ToBinary(int myValue)
{
string binVal = Convert.ToString(myValue, 2);
int bits = 0;
int bitblock = 4;
for (int i = 0; i < binVal.Length; i = i + bitblock)
{ bits += bitblock; }
return binVal.PadLeft(bits, '0');
}
首先我们将我的值转换为二进制。 初始化位以设置二进制输出的长度。 一个Bitblock有4位数。在for循环中,我们检查转换后的二进制值的长度并添加&#34;位&#34;为二进制输出的长度。
实施例: 输入:1 - &gt; 0001; 输入:127 - &gt; 01111111 等....
答案 3 :(得分:0)
string aaa = Convert.ToString(3, 2).PadLeft(10, '0');
答案 4 :(得分:0)
public static String HexToBinString(this String value)
{
String binaryString = Convert.ToString(Convert.ToInt32(value, 16), 2);
Int32 zeroCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(binaryString.Length) / 8)) * 8;
return binaryString.PadLeft(zeroCount, '0');
}
答案 5 :(得分:0)
您可以使用以下方法:
public static class BinaryExt
{
public static string ToBinary(this int number, int bitsLength = 32)
{
return NumberToBinary(number, bitsLength);
}
public static string NumberToBinary(int number, int bitsLength = 32)
{
string result = Convert.ToString(number, 2).PadLeft(bitsLength, '0');
return result;
}
public static int FromBinaryToInt(this string binary)
{
return BinaryToInt(binary);
}
public static int BinaryToInt(string binary)
{
return Convert.ToInt32(binary, 2);
}
}
样品:
int number = 3;
string byte3 = number.ToBinary(8); // output: 00000011
string bits32 = BinaryExt.NumberToBinary(3); // output: 00000000000000000000000000000011