如何将十六进制数字字符串扫描成char变量?

问题描述 投票:0回答:1

我想知道为什么下面的代码不能按我的预期工作:

    unsigned char c=0,d=0;
    char str[]="0102";
    int result=sscanf(str,"%2hhx%2hhx",&c,&d);

我期望 c=1 和 d=2,但实际上 c=0 和 d=2。为什么?

c scanf
1个回答
0
投票

它确实设置了 c=1 和 d=2 cpp.sh 上的代码

#include <stdio.h>

int main ()
{
 unsigned char c=0,d=0;
    char str[]="0102";
    int result=sscanf(str,"%2hhx%2hhx",&c,&d);
    printf ("c=%d  d=%d\n",c,d);
}

输出:

c=1  d=2
© www.soinside.com 2019 - 2024. All rights reserved.