# Ipaddr and invalid ipv4 addresses

**URL:** <https://www.ruby-forum.com/t/ipaddr-and-invalid-ipv4-addresses/154740>\
**Category:** Ruby\
**Created:** [December 3, 2008, 1:09pm UTC](https://www.ruby-forum.com/t/ipaddr-and-invalid-ipv4-addresses/154740 "2008-12-03T13:09:20Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Martin\_DeMello](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f17d59/32.png) [@Martin\_DeMello](https://www.ruby-forum.com/u/Martin_DeMello)\
**Post date:** [December 3, 2008, 1:09pm UTC](https://www.ruby-forum.com/t/ipaddr-and-invalid-ipv4-addresses/154740/1 "2008-12-03T13:09:20Z")

</div>

What’s going on here?

irb(main):002:0\> require ‘ipaddr’  
=\> true

irb(main):003:0\> ip = IPAddr.new(‘192.168.1.1024’)  
=\> #\<IPAddr: IPv4:192.168.5.0/255.255.255.255\>

irb(main):005:0\> IPSocket.getaddress(‘192.168.1.1024’)  
=\> “68.142.212.71”

irb(main):003:0\> IPSocket.getaddress(‘asd’)  
=\> “68.142.212.71”

martin

---

<div class="post-metadata">

**Author:** ![Martin\_DeMello](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f17d59/32.png) [@Martin\_DeMello](https://www.ruby-forum.com/u/Martin_DeMello)\
**Post date:** [December 3, 2008, 1:20pm UTC](https://www.ruby-forum.com/t/ipaddr-and-invalid-ipv4-addresses/154740/2 "2008-12-03T13:20:28Z")

</div>

On Wed, Dec 3, 2008 at 8:03 PM, Martin DeMello [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> What’s going on here?

> require ‘ipaddr’  
> =\> true  
> ip = IPAddr.new(‘192.168.1.1024’)  
> ArgumentError: invalid address  
> from /usr/local/lib/ruby/1.8/ipaddr.rb:467:in `initialize' from (irb):2:in `new’  
> from (irb):2  
> RUBY\_VERSION  
> =\> “1.8.7”

---

<div class="post-metadata">

**Author:** ![Martin\_DeMello](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f17d59/32.png) [@Martin\_DeMello](https://www.ruby-forum.com/u/Martin_DeMello)\
**Post date:** [December 3, 2008, 1:34pm UTC](https://www.ruby-forum.com/t/ipaddr-and-invalid-ipv4-addresses/154740/3 "2008-12-03T13:34:32Z")

</div>

On Wed, Dec 3, 2008 at 5:44 PM, botp [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > RUBY\_VERSION  
> > =\> “1.8.7”

Ah - my bad, I’m still running 1.8.6 and didn’t think to check the  
latest version.

martin

---

<div class="post-metadata">

**Author:** ![Martin\_DeMello](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f17d59/32.png) [@Martin\_DeMello](https://www.ruby-forum.com/u/Martin_DeMello)\
**Post date:** [December 3, 2008, 11:15pm UTC](https://www.ruby-forum.com/t/ipaddr-and-invalid-ipv4-addresses/154740/4 "2008-12-03T23:15:49Z")

</div>

On Dec 3, 7:03 am, Martin DeMello [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> What’s going on here?
> 
> irb(main):002:0\> require ‘ipaddr’  
> =\> true
> 
> irb(main):003:0\> ip = IPAddr.new(‘192.168.1.1024’)  
> =\> #\<IPAddr: IPv4:192.168.5.0/255.255.255.255\>

The snippet above is pretty easy to understand if you convert the ip  
to a single integer, then convert back to hex…

irb(main):003:0\> ip1=((192\*256+168)\*256+1)\*256+1024  
=\> 3232236800  
irb(main):004:0\> ip1.to\_s(16).scan(/…/).map{|v| v.to\_i(16)}.join  
( “.”)  
=\> “192.168.5.0”
