【发布时间】:2013-02-15 14:54:51
【问题描述】:
我编写了一个代码,用于将基于使用输入的大数转换为十六进制数。但是当打印结果时,只有数字的一部分被转换为十六进制,并且数组中还有其他随机值。
例如: 十进制 = 1234567891012 ---- 十六进制 = 00 00 00 02 00 00 00 65 00 6b 42 48 71 fb 08 44
最后四个值 (71 FB 08 44) 是正确的十六进制值,但其他值不正确
我正在使用 uint8_t buf[];
代码:
int main()
{
uint8_t buf[] = {0};
long int i,a;
printf("Enter Number: ");
scanf("%d", &buf);
printf("\n");
printf("Input #: ");
/* put a test vector */
for (i = 15; i >= 0; i--)
{
printf("%02x ", buf[i]);
}
printf("\n\n");
printf("\n\n");
printf("%d\n",sizeof(buf));
system("pause");
return 0;
}
【问题讨论】:
-
请发布您的代码。
-
设置??这是什么意思?
-
random values通常意味着您没有将数组初始化为有效的东西,所以它是垃圾。 -
@Aniket - OP 的意思是“四个”而不是“为”。最后 4 个字节是正确的。
-
我闻到整数溢出的味道