连接二进制文件然后转换为int

时间:2015-07-22 16:46:13

标签: c#

string middlePart = "1111";
string leftPart = "0000";
string rightPart = "0000";

我想将所有这三个连接在一起以生成000011110000,并将该二进制文件转换为int

以下代码不起作用,因为数字太大了。

int maskingVal = Convert.ToByte((leftPart+middlePart+rightPart), 2);

有没有办法在二进制文件的每个部分上对Convert.ToByte执行int,并连接它们的二进制等效项以获得int的正确000011110000值。

谢谢

4 个答案:

答案 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
相关问题