我正在尝试使程序的最终结果更进一步,并将其分为4个部分。该程序将十六进制数转换为二进制。我想将二进制数分成4个不同的部分。这些部分是2,7,3,4。例如将0100000110001001分解为01 | 0000011 | 000 | 1001。我将把每个部分分配给变量n1,n2,n3和n4。最终结果将是n1 = 01,n2 = 0000011,n3 = 000和n4 = 1001。最好的方法是什么?我目前正在使用c ++,但是如果更容易的话可以切换到其他东西。谢谢
答案 0 :(得分:1)
您可以结合使用>>
(右移运算符)和&
(布尔和运算符)来完成此操作。
#include <iostream>
#include <bitset>
int main(){
int i = 0b0100000110001001;
int n4 = i & 0b1111;
std::cout << "n4 = " << std::bitset<4>(n4) << '\n';
i = i >> 4;
int n3 = i & 0b111;
std::cout << "n3 = " << std::bitset<3>(n3) << '\n';
i = i >> 3;
int n2 = i & 0b1111111;
std::cout << "n2 = " << std::bitset<7>(n2) << '\n';
i = i >> 7;
int n1 = i & 0b11;
std::cout << "n1 = " << std::bitset<2>(n1) << '\n';
}
输出:
n4 = 1001
n3 = 000
n2 = 0000011
n1 = 01
答案 1 :(得分:0)
好吧,您可以将二进制数字解析为字符串,然后使用子字符串获取4个数字部分。您可能会遇到左零的问题,这将由int变量来解决。 我用C#制作的。
class Program
{
static void Main(string[] args)
{
string binaryNumber = "0100000110001001"; // your binary number to string
int n1 = Convert.ToInt32(binaryNumber.Substring(0, 2));
int n2 = Convert.ToInt32(binaryNumber.Substring(2, 7));
int n3 = Convert.ToInt32(binaryNumber.Substring(9, 3));
int n4 = Convert.ToInt32(binaryNumber.Substring(12, 4));
string xn1 = n1.ToString().PadLeft(2, '0');
string xn2 = n1.ToString().PadLeft(7, '0');
string xn3 = n1.ToString().PadLeft(3, '0');
string xn4 = n1.ToString().PadLeft(4, '0');
Console.WriteLine("Numbers in INT variables (without left zeros)");
Console.WriteLine($"1 Section (2):{n1}");
Console.WriteLine($"2 Section (7):{n2}");
Console.WriteLine($"3 Section (3):{n3}");
Console.WriteLine($"4 Section (4):{n4}");
Console.WriteLine("Numbers in STRING variables (with left zeros)");
Console.WriteLine($"1 Section (2):{xn1}");
Console.WriteLine($"2 Section (7):{xn2}");
Console.WriteLine($"3 Section (3):{xn3}");
Console.WriteLine($"4 Section (4):{xn4}");
Console.ReadKey();
}
}
希望有帮助!