string middlePart = "1111";
string leftPart = "0000";
string rightPart = "0000";
我想将所有这三个连接在一起以生成000011110000
,并将该二进制文件转换为int
。
以下代码不起作用,因为数字太大了。
int maskingVal = Convert.ToByte((leftPart+middlePart+rightPart), 2);
有没有办法在二进制文件的每个部分上对Convert.ToByte
执行int,并连接它们的二进制等效项以获得int
的正确000011110000
值。
谢谢
答案 0 :(得分:4)
我不知道为什么你根本不做
var maskingVal = Convert.ToInt16((leftPart + middlePart + rightPart), 2);
但你也可以这样做
byte middlePart = Convert.ToByte("1111", 2);
byte leftPart = Convert.ToByte("0000",2);
byte rightPart = Convert.ToByte("0000",2);
var maskingVal = leftPart << 8 | middlePart << 4 | rightPart;
答案 1 :(得分:2)
如Adriano Repetti所示,您可以指定基数2:
int maskingVal = Convert.ToInt32(leftPart+middlePart+rightPart, 2);
答案 2 :(得分:1)
string middlePart = "1111";
string leftPart = "0000";
string rightPart = "0000";
int leftVal = Convert.ToByte(leftPart, 2) * 256;
int middleVal = Convert.ToByte(middlePart, 2) * 16;
int rightVal = Convert.ToByte(rightPart, 2);
int maskingVal = leftVal + middleVal + rightVal;
答案 3 :(得分:0)
您可以自己跳过转换并计算该值。
string middlePart = "1111";
string leftPart = "0000";
string rightPart = "0000";
string combine = leftPart + middlePart + rightPart;
long value = 0;
for (int i = combine.Length - 1, exponent = 1; i >= 0; i--, exponent *= 2)
{
if (combine[i] == '1')
{
value += exponent;
}
}
Console.WriteLine(value);
结果:
240