読者です 読者をやめる 読者になる 読者になる

inet_aton

inet_atonは、IPアドレス文字列をネットワークバイトオーダのバイナリ値に変換するライブラリ関数・・・。

Man page of INET

IPアドレス1.2.3.4を変換する・・・。

in_addr構造体変数addrを用意・・・。

inet_atonで"1.2.3.4"をネットワークバイトオーダ(ビッグエンディアン)のバイナリ値に変換し、addrのs_addr要素に格納する・・・。

printfでaddr.s_addrを出力する・・・。

すると、

$ ./inet_aton
addr.s_addr = 0x04030201
$

と出力される・・・。

"1.2.3.4"をビッグエンディアンなバイナリ値に変換するので、先頭から8ビットずつ, 0x01, 0x02, 0x03, 0x04、と入れていく・・・。
ただ、これを32ビット値として出力するときは、リトルエンディアンとして参照するので、"0x04030201"と出力される・・・。
(※.誤解しやすいが、あくまでバイト配列としては0x01, 0x02, 0x03, 0x04の順で入っている・・・。)

Sample/inet_aton.c at master · bg1bgst333/Sample · GitHub