ip 地址 整型和字符型互转换

//把字节类型转换为整型
int  makeInt(BYTE b[],int n) 
{
  /*WORD hiWord=HIWORD(ip);
  WORD loWord=LOWORD(ip);
  BYTE b3=HIBYTE(hiWord);
  BYTE b2=LOBYTE(hiWord);
  BYTE b1=HIBYTE(loWord);
  BYTE b0=LOBYTE(loWord);*/
int c=(int)((((b[3] &0xffff)<<24)|((b[2]&0xffff)<<16)  
                 |((b[1] & 0xffff)<< 8)| ((b[0]  & 0xffff)<< 0)));  
return c;
 }
 
 
 /*
 sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。
sprintf 是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
格式化字符串上。


 */
 char*intTipstr(const int ip, char *buf)//come from book
 {
 //分别指向整数各个字节不分是关键,可以通过指针移动来到到目的
     sprintf(buf,"%u.%u.%u.%u",
            (uchar)*((char*)&ip + 0),//第零个字节,最高位
   (uchar)*((char*)&ip +1),
   (uchar)*((char*)&ip +2),
   (uchar)*((char*)&ip +3)//第三个字节最低位
   );
   return buf;
   
 }

你可能感兴趣的:(c,buffer,byte)