台北去桃园机场:sprintf %02x

来源:百度文库 编辑:偶看新闻 时间:2024/05/01 22:05:07
#include#include#define lo(f) ((f)&0xff)#define hi(f) (lo(f>>8))int main(void){int key;do{ key=bioskey(0); printf("0x%02x 0x%02x %c\n",hi(key),lo(key),lo(key));//这条语句中0x%02x是什么意思??}while(key!=0x011b);/*printf("hello world");*/return 0;}
%02X什么意思啊!格式控制:     以十六进制输出,2为指定的输出字段的宽度.如果位数小于2,则左端补0
就是说hi(key)的返回值,将以十六进制,并且显示2位的方式显示。例如:hi(key)==0x09那么0x%02x 就显示为 0x09,如果你用0x%x 就显示为0x9

//   以1   6进制方式按字节显示数据void   ShowHex(void   *   pv,int   size){char   *   pc=new   char[100];   //   临时字符数组,获取整个数据的16进制表示char   *   temppc=new   char[10];   //   临时字符数组,获取单个字节的16进制表示if((pc!=NULL)&&(temppc!=NULL)){strcpy(pc, " ");   //清空for(int   i=0;i {sprintf(temppc, "%02X   ",((unsigned   char   *)pv)[i]);//问题所在strcat(pc,temppc);}cout < }sprintf(temppc, "%02X   ",((unsigned   char   *)pv)[i]);//问题所在
-----> 这个是C语言的基本函数啊,就是一个字符串的输出函数,和printf的差别在于它输出定向到一个字符缓冲(temppc)。在CB的HELP中,敲入sprintf,看到完整帮助
sprintf(temppc, "%02X   ",((unsigned   char   *)pv)[i]);
将pv当前字节按16进制显示到temppc。
%02X  与  %2XIf   width   is   prefixed   with   0,   zeros   are   added   until   the   minimum   width   is   reached.   If   0   and   –   appear,   the   0   is   ignored.   If   0   is   specified   with   an   integer   format   (i,   u,   x,   X,   o,   d)   the   0   is   ignored.   

就是说一般情况下表示在左侧填充'0’,直到达到声明的长度。但是又用了'-’标志的,及转换i,   u,   x,   X,   o,   d这些数字时,'0’标志被忽略。

#include #include #include int main(){    char data[6] = {0x01,0x26,0x0A,0x0B,0x21,0x23};    char buffer[100];    memset(buffer, 0, sizeof(buffer));    sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", data[0],data[1], data[2],data[3], data[4],data[5]);    printf("转换后:%s\n", buffer);    printf("转换后length:%d\n", strlen(buffer));    system("pause");    return 0;}显示 strlen(buffer) = 17 (2*6 + 5);