2016-05-05 4 views
2

IPv6 ipの短い形式を拡張形式に変換したいと考えています。 Fe80:0000:0000:0000:0000:0000:0000:0001とfe80:0010 :: 1のfe80 :: 0010:0000:0000:0000:0000:0000: 0001などである。 TCLやPerlやPython言語を使ってスクリプトを書くのを手伝ってもらえますか?TCL/Perlを使ってIPv6 ipを正規化する方法は?

コードはどのような形式であっても拡張形式でなければなりません。

+3

補足として、有効なIPv6フォーマットを受け入れる必要がありますが、[RFC 5952](https://tools.ietf.org/html/rfc5952)に従って常に圧縮フォーマットを返すべきです。 –

答えて

5

Net::IPモジュール使用:Tclで

$ perl -MNet::IP=:PROC -le'print ip_expand_address("fe80::1", 6);' 
fe80:0000:0000:0000:0000:0000:0000:0001 
3

Pythonの場合は、netaddrを使用してあらゆる種類のIPアドレスを処理することをお勧めします。あなたのケースでは、異なるフォーマットでIPv6をフォーマットする能力があります。forms/dialects。 Perlで

import netaddr 

ip = netaddr.IPAddress("fe80::1") 

print ip.format(dialect=netaddr.ipv6_verbose) 
4

を、ipパッケージを使用します。

% package require ip 
1.2.2 
% ::ip::normalize fe80::1 
fe80:0000:0000:0000:0000:0000:0000:0001 
あなたが行うことができるはず、あなたの特定のユースケースについては

ドキュメント:ipパッケージ

+0

ありがとうございます。 :: ip :: normalizeのソースコードを見ることは可能でしょうか?私はコードの流れを見たいと思う。 – user3441116

+0

@ user3441116:ソースコードは[こちら](http://core.tcl.tk/tcllib/artifact/f5774de8fef6c790)です。著作権およびライセンス条項にご注意ください。 –

+0

ありがとうございます。この手順の背後にある論理を理解したかっただけです。 – user3441116

関連する問題