Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接二进制文件,然后转换为int_C# - Fatal编程技术网

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

C# 连接二进制文件,然后转换为int,c#,C#,我想把这三个连接在一起,得到00001110000,并将二进制转换成int 下面的代码不起作用,因为数字太大了 string middlePart = "1111"; string leftPart = "0000"; string rightPart = "0000"; 是否有任何方法将二进制文件的每个单独部分上的Convert.ToByte转换为int,并将它们的二进制等价物连接起来,以获得正确的int值00001110000 谢谢如Adriano Repetti所示,您可以指定基数2:

我想把这三个连接在一起,得到00001110000,并将二进制转换成int

下面的代码不起作用,因为数字太大了

string middlePart = "1111";
string leftPart = "0000";
string rightPart = "0000";
是否有任何方法将二进制文件的每个单独部分上的Convert.ToByte转换为int,并将它们的二进制等价物连接起来,以获得正确的int值00001110000


谢谢

如Adriano Repetti所示,您可以指定基数2:

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

我不知道你为什么不这么做

int maskingVal = Convert.ToInt32(leftPart+middlePart+rightPart, 2);
但你也可以这样做

var maskingVal = Convert.ToInt16((leftPart + middlePart + rightPart), 2);

您可以跳过转换,自己计算值

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;
结果:

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);
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