我有一个数字列表如下:
0、16、32、48 ...
我需要将这些数字以十六进制形式输出为:
0000,0010,0020,0030,0040 ...
我已经尝试过解决方案,例如:
printf("%.4x",a); // where a is an integer
但我得到的结果是:
0000, 0001, 0002, 0003, 0004 ...
我想我离那里很近。任何人都可以帮忙,因为我不是 非常擅长 C.
printf
谢谢。
尝试:
printf("%04x",a);
0
- 用左键填充数字
零 (0) 而不是空格,其中
指定填充。4
(宽度)-最小数量
要打印的字符。如果
要打印的值小于
这个数字,结果是右对齐的
在此宽度内通过左侧填充
与垫字符。默认情况下这是
一个空格,但我们使用了前导零
指定一个零作为填充字符。
即使结果是,该值也不会被截断
更大。x
- 十六进制说明符
整数。更多在这里
我这样使用它:
printf("my number is 0x%02X\n",number);
// output: my number is 0x4A
只需将数字“2”更改为您要打印的任意数量的字符;)
你的代码没有问题。它确实按照您想要的方式打印。或者,您可以这样做:
printf("%04x",a);
您可以使用以下代码片段:
#include<stdio.h>
int main(int argc, char *argv[]){
unsigned int i;
printf("decimal hexadecimal\n");
for (i = 0; i <= 256; i+=16)
printf("%04d 0x%04X\n", i, i);
return 0;
}
它在 4 个位置打印十进制和十六进制数字,并用零填充。
#include <stdio.h>
int main() {
int a[5] = {22, 33, 44, 55, 66};
int *ptr = NULL;
ptr = a; /* point to the first array element */
printf("%d %x\n", *ptr, ptr); /* 22 */
ptr++;
printf("%d %x\n", *ptr, ptr); /* 33 */
ptr += 3;
printf("%d %x\n", *ptr, ptr); /* 66 */
ptr--;
printf("%d %x\n", *ptr, ptr); /* 55 */
ptr -= 2;
printf("%d %x\n", *ptr, ptr); /* 33 */
return 0;
}