【发布时间】:2018-03-09 10:51:05
【问题描述】:
我目前正在研究一个项目,它是一个转换器...我目前正在研究十进制到十六进制。到目前为止的代码如下所示:
int rest;
int arr[50];
int i;
cout << N << " in decimal after conversation ";
while (N>0){
rest=N%16;
if (rest>9){
switch (rest){
case 10:
arr[i]='A';
break;
case 11:
arr[i]='B';
break;
case 12:
arr[i]='C';
break;
case 13:
arr[i]='D';
break;
case 14:
arr[i]='E';
break;
case 15:
arr[i]='F';
break;
}
}
else {
arr[i]=rest;
}
N=N/16;
i+=i;
}
cout<<arr;
return 1;
它在函数中,所以不要为返回 1 烦恼... 我的问题是: 有没有办法将整个数组(例如 containsig [4,2,K,8] 拉到一个变量中?以完全相同的顺序!
编辑
aaaaaaaaaaaaaaaaaaaaaaaaaa 我回来了 :D 我对程序进行了一些更改,现在它正在运行,它是这样的:
int DecToHex(long long N)
{
int rest;
string s="";
while (N>0){
rest=N%16;
if (rest>9){
switch (rest){
case 10:
s="A"+s;
break;
case 11:
s="B"+s;
break;
case 12:
s="C"+s;
break;
case 13:
s="D"+s;
break;
case 14:
s="E"+s;
break;
case 15:
s="F"+s;
break;
}
}
else {
s = char(rest + 48) + s;
}
N=N/16;
}
if (s == "")
cout << "0";
else
cout << s;
return 1;
}
知道如何将十六进制数转换为二进制数吗?十六进制可以是字符串,但二进制需要是 int。 程序的结构应该类似于我的这个。 bud thnak 向大家寻求帮助!
【问题讨论】:
-
您是否考虑过直接使用
std::string而不是尝试构建和转换您的数组? -
我宁愿在没有“std::”的情况下编写它,因为整个程序都应该没有它们(不要问我为什么,因为我不知道)
-
除了上述注释之外,您还可以将字符放入数组中,但随后您执行
arr[i]=rest;。那应该是arr[i] = '0' + rest; -
整个开关也可以更换。值
10-15(显然是连续的)对应于字符'A'-'F'(也是连续的) -
@Kevin:
'0', ,'9'保证是连续的,'A', ..,'F'则不是这样。
标签: c++ arrays string hex decimal