如何在C++中将十六进制字符转换为二进制
How to convert a hex char to binary in C++?
我正在尝试转换来自用户的两 (2( 个输入。我正在接受变量M
的输入。K
变量未使用。
我试图使用循环for
解决它,但是,我做不到。第一个循环无法停止。
使用数组有错吗?而且,我可以在 for
循环之后将二进制输出输入到新数组中吗?
这是我的代码:
include<iostream>
using namespace std;
int main()
{
char M[64],K[64];
long int i=0;
cout<<"Enter M: ";
cin>>M;
cout<<"M= ";
while(M[i])
{
switch(M[i])
{
case '0':
cout<<"0000";
break;
case '1':
cout<<"0001";
break;
case '2':
cout<<"0010";
break;
case '3':
cout<<"0011";
break;
case '4':
cout<<"0100";
break;
case '5':
cout<<"0101";
break;
case '6':
cout<<"0110";
break;
case '7':
cout<<"0111";
break;
case '8':
cout<<"1000";
break;
case '9':
cout<<"1001";
break;
case 'A':
cout<<"1010";
break;
case 'B':
cout<<"1011";
break;
case 'C':
cout<<"1100";
break;
case 'D':
cout<<"1101";
break;
case 'E':
cout<<"1110";
break;
case 'F':
cout<<"1111";
break;
case 'a':
cout<<"1010";
break;
case 'b':
cout<<"1011";
break;
case 'c':
cout<<"1100";
break;
case 'd':
cout<<"1101";
break;
case 'e':
cout<<"1110";
break;
case 'f':
cout<<"1111";
break;
default:
cout<<"nInvalid hexadecimal digit "<<M[i];
}
i++;
}
return 0;
cout<<"nEnter K: ";
cin>>K;
cout<<"K: ";
while(K[i])
{
switch(K[i])
{
case '0':
cout<<"0000";
break;
case '1':
cout<<"0001";
break;
case '2':
cout<<"0010";
break;
case '3':
cout<<"0011";
break;
case '4':
cout<<"0100";
break;
case '5':
cout<<"0101";
break;
case '6':
cout<<"0110";
break;
case '7':
cout<<"0111";
break;
case '8':
cout<<"1000";
break;
case '9':
cout<<"1001";
break;
case 'A':
cout<<"1010";
break;
case 'B':
cout<<"1011";
break;
case 'C':
cout<<"1100";
break;
case 'D':
cout<<"1101";
break;
case 'E':
cout<<"1110";
break;
case 'F':
cout<<"1111";
break;
case 'a':
cout<<"1010";
break;
case 'b':
cout<<"1011";
break;
case 'c':
cout<<"1100";
break;
case 'd':
cout<<"1101";
break;
case 'e':
cout<<"1110";
break;
case 'f':
cout<<"1111";
break;
default:
cout<<"nInvalid hexadecimal digit "<<K[i];
}
i++;
}
return 0;
}
首先
,您正在使用代码的 2 部分,重复使用,您应该考虑使用一个函数以获得更高的可扩展性(想象一下,如果您想转换 5 个输入,复制粘贴开关 5 次不是一个好的做法。
然后,for 循环主要用于已知大小的集合,while 用于未知大小的集合,因此对于 for ,您可以只输入数组的大小:
for(int i = 0;i<64;i++){
convert(M[i]);
}
如果你想有一个好的可扩展性,你应该考虑使用 sizeof(M(/sizeof char 或全局常量或 #define 来表示你可以拥有的最大字符串......
希望它有帮助。
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 字符转换功能 std::isupper() & std::islower() C++17
- 将字符 * 转换为字符串 *
- 在编译时将常量字符* 转换为常量 char_type*
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 无法使用字符串流将字符转换为字符串C++
- 将无符号字符 C++ 转换为 C#
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 无法<string>从"常量字符 []"转换为<类名>
- 不能将字符转换为整数吗?
- 编译时将字符*转换为字节
- CP1251:从字符* 转换为 wchar_t* 时的编码失真
- 将单个字符转换为 std::string 前缀 \x01
- PPM 将字符转换为 int 授予负数
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类
- 将常量字符* 转换为字符时出错