一个char* p里的3456位,存储着一个四位的16进制数,例如:0x1006.
我怎么才能把这个数读出来?详细点,呵呵,谢谢。

解决方案 »

  1.   

    int CharToNum(char c)
    {
    if(c<='9'&&c>='0')
    return int(c)-48;
    if(c<='Z'&&c>='A')
    return int(c)-55;
    if(c<='z'&&c>='a')
    return int(c)-87;
    return -1;
    }
    ....
    int t=0;
    for(int i=2;i<6;i++)
    {
         t*=16;
         t+=CharToNum(*(p+i));
    };
      

  2.   

    楼上的老兄,具体点好么?
    关键是char* p里面不仅仅是到第6位就没有了,可能有上千个字节呢
      

  3.   

    int i =(int)(short int)*(p+3456)
      

  4.   

    也写错了
    int i= *(int*)(p+n)
      

  5.   

    int i= *(int*)(p+n) 有符号数
    usigned int i= *(unsigned int*)(p+n)  无符号数
      

  6.   

    不是的,在这个char里,不应该出现负数的
      

  7.   

    char变到int就有可能是负数,只要最位是1
      

  8.   

    char变到int就有可能是负数,只要最高位是1
      

  9.   

    char *p1;
    p1 = &p[2];
      

  10.   

    >>右移2位,然后用位操作符判断将前4位置0,然后得到的这个<16 的char就是你要的int了
      

  11.   

    基本上程序是这样的。
    用socket传送文件,发送方在文件包头加上12个字节,其中3~6位是包的大小。
    我做的接收方,接受到文件后,要读出文件大小。
    rc=recv(fd,bp,cnt,0);
    上面这句就是接收的语句了。怎么办?
    传送方加包头的代码是:
    ............
    ............
    dwLen=0x1006;
    _xDwordToBuffer(dwLen,&buffer[index]);
    index+=4;
    dwLen-=4;
    ...........
    ...........
      

  12.   

    用socket传送文件,发送方在文件包头加上12个字节,其中3~6位是包的大小。靠,字节和位是两个概念,问问题要分清一些,要不然别人都以为问的什么呢字节的话那不很简单嘛,直接itoa不就行了