【C】取十六进制中的某一位

写在前面的话:

  1. 版权声明:本文为博主原创文章,转载请注明出处!
  2. 博主是一个小菜鸟,并且非常玻璃心!如果文中有什么问题,请友好地指出来,博主查证后会进行更正,啾咪~~
  3. 每篇文章都是博主现阶段的理解,如果理解的更深入的话,博主会不定时更新文章。
  4. 本文最后更新时间: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值