C 程序将小数转换为十六进制
C++ program to convert decimal to hexadecimal
我写了一个程序,通过使用开关命令将其转换为十六进制,但如果我使用char,则该程序效果不佳!没有切换,我将无法处理9个上方的数字。我希望你确实了解我,因为我的语言不太好。
所以这是我的程序
顺便说一句,如果将其 int
而不是char
,则可以正常工作,但它变为11
而不是B
#include <iostream>
using namespace std;
int main()
{
int n, i, c=0, t;
char a[50];
cout << "Enter a decmail number :n";
cin >> n;
t = n;
for (i = 0; t > 0; i++)
{
if (a[i] % 16 > 9)
{
switch(a[i])
{
case 10 : a[i] = 'A'; break;
case 11 : a[i] = 'B'; break;
case 12 : a[i] = 'C'; break;
case 13 : a[i] = 'D'; break;
case 14 : a[i] = 'E'; break;
case 15 : a[i] = 'F'; break;
}
}
else
{
a[i] = t % 16;
}
t = t / 16;
}
cout << n << " In hexdecmail = ";
for(c = i - 1; c >= 0; c--)
{
cout << a[c];
}
}
这里的问题是1与'1'不同。1是第一名,而" 1"是一个字符常数。要将1转换为" 1",您必须将" 0"添加到数字。因此您可以更改行 a[i] = t%16;
到a[i] = t%16 + '0';
另外,您还需要将其放在t%16上,而不是将IF条件和开关箱放在[I]上,因为尚未设置[I]。休息应该可以正常工作。
编辑:要了解从数字到角色常数工作的对话如何工作,您需要了解角色在内部的表示。
每个字符(如A-Z,A-Z,0-9)和特殊字符的分配数在0到256之间。该编号称为字符的ASCII值。您可以在此处找到所有ASCII值的列表。
" 0"的ASCII值是48。" 1"的ASCII值是49,'2'为50,依此类推。现在,您拥有的是数字(您可以通过t%16来获得)。说这是3。要将其转换为ASCII代码(51),您必须添加48。同样,可以通过添加48来将0-9之间的所有数字转换为其ASCII值。这是因为数字的ASCII值是连续的。
通常很难记住ASCII值48。因此,您可以写入" 0",这在内部表示48.
我希望这会有所帮助。
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将十六进制转换为 DEC
- 将字符指针中的十六进制转换为十进制
- 使用 std::hex 将十六进制转换为十进制
- 将40个字节长的数据框从十六进制转换为二进制,然后转换为十进制
- 如何将十六进制转换为十进制
- 在C++中将十六进制转换为uint8_t
- 从十六进制转换为LPCVoid,切断了一半地址
- 将十六进制转换为可打印的字符串/字符
- 将 QString 十六进制转换为 ASCII 值
- 我如何在 C++ 中将变量从十六进制转换为 dec
- 混淆在C++中将十六进制转换为二进制
- C++中的十进制到十六进制转换代码
- 如何在C++中将十六进制转换为IEEE 754 32位浮点
- 十进制到十六进制转换错误
- 十进制到十六进制转换c++内置函数
- 如何将十六进制转换为字符串?C++
- 将 3d 数组元素从十六进制转换为二进制以获得 bmp
- C++:将十六进制转换为十进制
- 将十六进制转换为签名的十二月