写在前面的话:
- 版权声明:本文为博主原创文章,转载请注明出处!
- 博主是一个小菜鸟,并且非常玻璃心!如果文中有什么问题,请友好地指出来,博主查证后会进行更正,啾咪~~
- 每篇文章都是博主现阶段的理解,如果理解的更深入的话,博主会不定时更新文章。
- 本文最后更新时间:2020.7.27
正文开始
取十六进制数作为字符串:0x00000011
转换为十进制:17
转换为二进制:0000 0000 0000 0000 1111 1111 1111 1111
取第11位(&
): 0000 0000 0000 0000 1000 0000 0000 0000
将十六进制转换为十进制
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int main()
{
char a[20] = "0x00000011";
uint32_t b = strtoul(a, NULL, 16);
printf("b = %d\n", b);
return 0;
}
结果:
b = 17
%d:十进制有符号整数
%u:十进制无符号整数
将数以十六进制打印出来
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int main()
{
char a[20] = "0x00000011";
uint32_t b = strtoul(a, NULL, 16);
printf("b = %x\n", b);
return 0;
}
运行结果:
b = 11
%x:无符号以十六进制表示的整数
%f:浮点数
%s:字符串
%c:单个字符
%p:指针的值
%e:指数形式的浮点数
%0:无符号以八进制表示的整数
%g:自动选择合适的表示法
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int main()
{
char a[20] = "0x0000ffff";
uint32_t b = strtoul(a, NULL, 16);
printf("b = %x\n", b);
uint32_t c = (b & 0x00000800);
printf("c = %x\n", c);
return 0;
}
运行结果:
b = ffff
c = 800
c = 800 为第11位是1
若第11位为0,则c = 0