vs 2008中 DWORD 16进制的数,取双字节,怎么只取到了1个字节呢?
不能贴图,代码如下:
DWORD dwHex = strtoul((const char*)(LPCTSTR)strHex, NULL, 16);结果:
strHex=40,dwHex =4各位高人指点下,在线等,谢谢~~

解决方案 »

  1.   

    不会啊,得到的就是40啊。是不是你的strHex是宽版的啊??
      

  2.   

    char* str = "40";
    DWORD dwHex = strtoul((const char*)(LPCTSTR)str, NULL, 16);
      

  3.   

    不需要,可以用人家提供的宏了。HIWORD
    LOWORD分别可以取高两个字节,低两个字节的值。
      

  4.   


    这个在vc6 中没有问题,在vs2008就有问题
      

  5.   

    不要用特定字符版本的crt,比如你的strtoul,你的代码在unicode下根本就是错的。也不要用char之流,除非你是不关数据内容的,典型的就是网络编程中,一般的数据用const char*来表达。你这样写代码:
    strtoul((LPCTSTR)strHex, NULL, 16);
    如果编译不过,明显是你的字符版本不对。应该这样:
    _tcstoul(strHex, NULL, 16);