none
char数组和16进制的互换 RRS feed

  • 问题

  • 写过将char互转16进制byte。但总感觉自己的算法不是很好,也不够简便。想征求一组两者互换相对简单且易懂的算法。
    2011年9月1日 2:06

答案

  • 您这个的话,需要自己解析, 类似这样:

    char str[] = "01 02 03 04";
    	BYTE cmd[1024] = {0};
    	char seps[] = " ";
    	char* token = NULL;
    	token = strtok(str, seps);
    	int i = 0;
    	while(NULL != token)
    	{
    		if(i >= 1024)
    			break;
    		cmd[i++] = strtoul(token, NULL, 16);
    		token = strtok(NULL, seps);
    	}
    


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2011年9月6日 9:23
    2011年9月1日 5:58
    版主

全部回复

  • 能否具体说一下char 互转Hex是什么意思么?
    麻烦把正确答案设为解答。
    2011年9月1日 2:47
    版主
  • 直接memcpy()就可以了
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年9月1日 2:52
    版主
  • 抄写的例子:char *str ="01 02 03 04";
    BYTE cmd[1024];

    赋值后
    cmd[1024] =  {0X01,0X02,0X03,0X04};

    2011年9月1日 2:52
  • 做映射表,两个两个字符的读。根据映射直接转换成HEX
    麻烦把正确答案设为解答。
    2011年9月1日 3:43
    版主
  • 您这个的话,需要自己解析, 类似这样:

    char str[] = "01 02 03 04";
    	BYTE cmd[1024] = {0};
    	char seps[] = " ";
    	char* token = NULL;
    	token = strtok(str, seps);
    	int i = 0;
    	while(NULL != token)
    	{
    		if(i >= 1024)
    			break;
    		cmd[i++] = strtoul(token, NULL, 16);
    		token = strtok(NULL, seps);
    	}
    


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2011年9月6日 9:23
    2011年9月1日 5:58
    版主