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