NSDATA数据中 协议定义了一个长度为4的数据为一个文件的长度,这个数据定议的类型int32,(底位在前) 我想把这个长度为4 的数据转换成int类型的值请问怎么转换。例如(bd,3c,0,0)NSDATA中的数据转换为十六进制后的值,

解决方案 »

  1. 这个有大小字节之分,大字节就是底位在前,小字节就是底位在后。
    可以定义一个union
    {
       int32 k;
       char  c[4];
    }union.k=长度
    然后根据union.c[x] 就可以直接取出第几位来
      


  2. 谢谢这个问题解决了  把方法发出来 以便有人少走弯路
    #pragma  Byte4 转int16 底位在前高位在后
    -(int)bytes2ToINT16:(Byte[4])val
    {
        int return_val=val[0]&0xFF; 
        return_val|=((val[1] << 8) & 0xFF00);  
        return return_val;
    }#pragma  Byte4 转int32 底位在前高位在后
    -(int)bytes4ToINT32:(Byte[4])val
    {
        int num = val[0] & 0xFF;  
        num |= ((val[1] << 8) & 0xFF00);  
        num |= ((val[2] << 16) & 0xFF0000);  
        return num; 
    }
      

类似问题 »