刚转手VS,还是很不习惯啊unsigned char *psendbuf = new unsigned char[1024];
unsigned char *recvBuf = new unsigned char[1024];
psendbuf[0] = '0x02';编译警告
warning C4305: “=”: 从“int”到“unsigned char”截断

解决方案 »

  1.   

    shit
    非得要把''去了
    psendbuf[0] = 0x02;
      

  2.   

    又解决了?之前都是VC6.0?VS的优势,会慢慢体会的,除了速度慢了点,编译严格了点。其他功能都改进了。
      

  3.   

    首先你搞清楚下,[0]这样的用法存的本来就是字符而非字符串。
    其次0x02要是作为一个数值来说应该是一个ASCII码对应的内容。
    你要是单纯的想存为字符串的话,就不能用一个unsigned char的字符空间来存四个字符控件。
      

  4.   

    psendbuf[0] = '0x02';和
    psendbuf[0] = 0x02;语义都不一样,你还在纠结于写法?如果你想通过ascii码直接给字符赋值,需要转成8进制或者16进制并通过转义符赋值,拿你的问题来说,就是:
    psendbuf[0] = '\x02'; //十六进制
    psendbuf[0] = '\002'; //八进制至于psendbuf[0] = '0x02';是什么语义,我想了半天,也不知道,后来在linux下实测,发现它的语义是:
    '0' + x02(十六进制)= 48('0'ascii码) + 2 = 50感觉这个语义不是标准语义,可能根本不存在对这行代码的标准语义。