ipx_addr()
ルーチンは
IPX
アドレスを表現する文字列を解釈し、
システムコールに渡すのに適したバイナリ情報を返します。
ipx_ntoa()
ルーチンは
IPX
アドレスを引数にとり、
アドレスを一般に使われる次のような表記法で記述した
ASCII
文字列として返します:
<ネットワーク番号>.<ホスト番号>.<ポート番号>
後につく 0 となるフィールドは抑制され、各番号は
ipx_addr()
の入力に適した 16 進数の形式で印字されます。
10 進数を越える数字が現れないフィールドは最後に
‘H’
が付加されます。
ipx_addr()
と一般に使用される大部分の形式との互換性の確保に努力が注がれてきました。
最初に、アドレスは
ピリオド
‘amp;.’
、コロン
‘amp;:’
、ポンド記号
‘amp;#’
の中から選んだ単一のセパレータで 1 フィールドから 3 フィールドに分割されます。
次に、各フィールドについてバイトセパレータ ( コロンまたはピリオド )
の有無を調べます。
バイトセパレータがある場合は、
分離されたバイトフィールドは 16 進数のニブルとして解釈されます。
全体はネットワーク順でのバイト上位に 0 を拡張したバイト列が
ネットワークのバイト順で解釈されます。
次に、フィールドでのハイフンの有無を調べます。
ハイフンがある場合はフィールドはハイフンで 1000 の位を
区切る 10 進数表記の数であると見なされます。
次に、フィールドは以下のようなやり方で数として解釈されます。
すなわち、
(C のように ) 先行する
‘0x’
や、 (Mesa のように ) 後続の
‘H’
がある場合、または 10 進数を越える数字がある場合には、
フィールドは 16 進数であると解釈されます。
先行する
‘0’
があり、かつ 8 進数を越える数字が無い場合には、
フィールドは 8 進数であると解釈されます。
いずれにも該当しない場合には、 10 進数として変換されます。