需要用字符串存储DWORD值假设1个DWORD值=3435973836,那么就需要10字节的字符串保存吗?
DWORD dwValue;
char  szValue[10+1];//能比10短吗?能不能用很短的字符串保存,越短越好

解决方案 »

  1.   

    把DWORD=0xFFFFFFFF的值转成10进制的字符串看看用了多少个字符,这个长度就是字符串的最小长度了
      

  2.   

    0xFFFFFFFF的值转成10进制的字符串看看用了多少个字符,这个长度就是字符串的最小长度了
    ???????????,ffff应该是无穷大,大大大大大大大大大着呢呵呵
      

  3.   

    那你直接保存对应的16进制字符好了,可以短一些啊.比如FF,你就存成"FF",比"255"短啊.
      

  4.   

    直接存放16进制好了,也可以自己编写32进制也行啊.
    如用16进制,FFFFFFFF 8个字节就可以了最长了
      

  5.   

    想了一下,5个字节应该是sizeof(DWORD)+1=5
    但是怎么转换呢
      

  6.   

    直接保存为DWORD就行了,还用这么麻烦?
      

  7.   

    我要放到FileMapping里面去,当字符串处理了,怎么存?
      

  8.   

    sizeof(DWORD)即可,不要+1,
    考虑到+1的人无非是要加一个\0,
    可是,二进制值是不须要\0的,而且也不能有\0的,
    因为二进制值中任何一字节都有可能正好等于\0。
    这样就使它的长度意外地“变短”了。
    楼主要用字符串表示,那倒是要加1的,
    究竟是几加1呢?可以选最短的表示方式:
    转成16进制看看就行了。
      

  9.   

    char buf[4];
    DWORD data = 12345678;
    memcpy(buf,&data,4);
    ...
    ...
    DWORD readData = 0;
    memcpy(&readData,buf,4);
    TRACE("%d",readData);