我有一个代表非常大的数字的 int 数组,例如:
// ...
unsigned int n1[200];
// ...
n1 = {1,3,4,6,1,...} ==> means my number is 13461...
如何将这个大数字转换成它的十六进制值?
最佳答案
所以这是我对这个问题的看法:
- 你有一个数字数组。
- 您想从这个数字数组构建一个无符号整数。
- 数字数组可以是十六进制数字或十进制数字。
要构建这个 unsigned long long,假设有一个 DECIMAL 数字数组:
unsigned long long myNum = 0;
unsigned int n1[200];
for (int i=0; i < n1.length ; i++ ){
myNum += pow(10,i) * n1[n1.length - i];
}
要构建这个 unsigned long long,假设有一个十六进制数字数组:
for (int i=0; i < n1.length ; i++ ){
myNum += pow(16,i)* n1[n1.length - i];
}
(注意基数 16)
免责声明:数组中存储的数字上限为 16 位。之后你将溢出缓冲区
如果只是以正确格式显示数字的问题...
好吧,int 是 int 是 int...(在内存中)。
我手上有 10 根手指,无论我是否称那个数字为 10 或 A。
如果你想用十六进制格式化 DISPLAY 的数字,那么试试这样的:
unsigned int i = 10;
//OR
unsigned int i = 0xA;
printf("My number in hex: %x", i);
printf("My number in decimal: %d", i);
关于c++ - 如何将 int 数组中定义的整数转换为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480004/