challenge IPv6アドレスの短縮

いろんなところでIPv6の実用化やそれに向けた実験が進められており、今後IPv6のアドレスを見かけることも多くなりそうなので少し触れてみよう、というお題です。

IPv6アドレスは16進表記した2バイトを、コロンで8つつなげて表記します。
例)1230:5670:0000:0000:0123:0000:0000:00ab 

各部分の頭の0は省略できます。上の例はこうなります。
例)1230:5670:0:0:123:0:0:ab 

また、0 が複数続くところは 「::」に置き換えることができます。(ただしアドレス内で1箇所のみ)
例)1230:5670::123:0:0:ab 

この短縮を行う関数を作ってください。
余力のある方は逆変換(伸長)も考えてみてください。
この程度ならライブラリに備わってるかも??
1
2
3
4
5
> ipv6_compress( '1230:5670:0000:0000:0123:0000:0000:00ab' )
1230:5670::123:0:0:ab

> ipv6_compress( '0000:0000:0000:0000:0000:0000:0000:0001' )
::1

Posted feedbacks

Number of comments:40 Nested Flatten
  1. 4 Ruby Python
  2. 3 Other C++ C
  3. 2 OCaml C# PHP Haskell Perl Scheme
  4. 1 Java sed Groovy Scala Smalltalk Common Lisp Batchfile Bash

Index

Feed

Other

Link

Pathtraq

loading...