首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言字符串和16进制转换的有关问题

2012-03-21 
C语言字符串和16进制转换的问题#include stdio.h#include string.hint main(){int hex_valchar *toke

C语言字符串和16进制转换的问题
#include <stdio.h>
#include <string.h>

int main()
{
 int hex_val;
 char *token;
 unsigned char buf[] = "0x01,0x03,0x00,0xC8,0x00,0x03,0x84,0x35";
 int i=0;
 char s[100];
 token = strtok (buf, ",");
 while (NULL != token)
 {
  sscanf (token, "%x", &hex_val);
  s[i]=hex_val;
  token = strtok (NULL, ",");
  i++;
 }
 int n;
 for(n=0;n<8;n++)
 {
  printf("%02x,",s[n]);
 }
 printf("\n");
 return 0;
}
我这段代码执行后显示的结果是:01,03,00,ffffffc8,00,03,ffffff84,35
我想要的结果是01,03,00,c8,00,03,84,35,多出一写ffffff,该怎么处理一下,谢谢!

[解决办法]
char型数据在编译的时候,会被提升到32位,由于是有符号,最高位不幸是1的话,高24位为全f.

所以用unsigned char

热点排行
Bad Request.