读书人

一个16进制的有关问题

发布时间: 2012-02-05 12:07:15 作者: rapoo

一个16进制的问题
已有

C/C++ code
char a[]="f"char b[]="b"现在想得到一个 c=0xfb


请问各位大神该如何实现 谢谢

[解决办法]
可以这样
C/C++ code
#include<stdio.h>#include<stdlib.h>int main(){    char *p = "0xff";    int n;    sscanf(p,"%x",&n);    printf("%x\n",n);}
[解决办法]
C/C++ code
char e[]="fffafbfc";unsigned char Buffer1,Buffer2,Buffer3,Buffer4;sscanf(e,"%2x%2x%2x%2x",&Buffer1,&Buffer2,&Buffer3,&Buffer4);
[解决办法]
探讨
char a[]="f";
char b[]="b";
unsigned int v1,v2;
unsigned int c;
//现在想得到一个 c=0xfb
sscanf(a,"%x",&v1);
sscanf(b,"%x",&v2);
c=(v1<<4)|v2;

[解决办法]
char a[]="f";
char b[]="b";
int c ;

c = atoi(a)*16 + atoi(b);

printf("c = %x",c);
[解决办法]
C/C++ code
#include<stdio.h>#include<stdlib.h>void get(unsigned char *src, unsigned char Buffer[]){    unsigned char uch;    while(*src && *(src + 1))    {        if ('A' <= *src && *src <= 'F' || 'a' <= *src && *src <= 'f')            uch = ((*src++ & 0x0f) + 9)<<4;        else if('0' <= *src && *src <= '9')            uch = (*src++ & 0x0f)<<4;        if ('A' <= *src && *src <= 'F' || 'a' <= *src && *src <= 'f')            uch |= ((*src++ & 0x0f) + 9);        else if('0' <= *src && *src <= '9')            uch |= (*src++ & 0x0f);        *Buffer++ = uch;    }}int main(){    #define N 8    unsigned char Buffer[N];    int i;        get("fffafbfcf33a5678", Buffer);    for (i = 0; i < N; i++)        printf("%x\n", Buffer[i]);            system("pause");    return 0;} 

读书人网 >C++

热点推荐