基本的な知識ポイント
ip-> integer:
左シフト(<<)、(&)、または(|)これらの操作を介してIPアドレスをバイト配列に変換します。
integer-> ip:
右シフト操作(>>>)、右を24ビットにシフトし、取得した0xffを実行します。
右シフト操作(>>>)、16ビットを右にシフトし、取得した数値を実行します。
右シフト操作(>>>)は、8ビットの右に移動し、取得した数値を実行します。
整数値はオペレーター(&)0xffで実行され、取得した数は4番目のステージIPです。
考え
たとえば、IPアドレスへのIPは「192.168.1.116」であり、「」に相当します。 256、1、そしてそれが複雑な場合、できるだけ早く
intタイプIPアドレス、同様のアイデア、重量値を除いて、いくつかの文字列操作
コード
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> define len 16 typedef unsigned int uint; )0; = 0 && cur <= 255){total += cur*pow(256、i);} i - ; (char*str、int begin、int end){int i、j; i ++、j-){if(str [i]!= str [j]){str [i] ^ str [j] = str [i] ^ str [j ]; str [i] ^ str [j];}} / *** char*iptstr(uint ipint){char*)malloc(len); (new、 '='。トークン、cur); -1); ed += 1;} new [len-1] %s scanf( "%s scanf("%s s "%s scanf("%s s "%s scanf("%s scanf))scanf( "%s s"%s scanf( "%s s) . ", ipstr)! = EOF) {ipint = iptint (ipstr); propf ("%u/n ", ipint); new = iptstr (ipint); Printf ("%s/n ", new);} Return 0;}