# Domanda su numeri binary

**URL:** <https://www.ruby-forum.com/t/domanda-su-numeri-binary/204547>\
**Category:** IT\
**Created:** [March 15, 2011, 11:53am UTC](https://www.ruby-forum.com/t/domanda-su-numeri-binary/204547 "2011-03-15T11:53:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [March 15, 2011, 11:53am UTC](https://www.ruby-forum.com/t/domanda-su-numeri-binary/204547/1 "2011-03-15T11:53:30Z")

</div>

dunque sto scrivendo un programma che dato un ipv4 in formato  
x1,x2,x3,x4/y  
mi calcola i vari ip di network,broad etc etc e poi confronta con altri  
ip e verifica se i 2 stanno sulla stessa rete, numero max di host etcetc  
(me lo sto facendo da solo perchè mi serve da ripassone per l’esame  
cisco)

il mio problema sta in preso che ne so un @x1=192 faccio @x1.to\_s(2) e  
me lo trasformo in “11000000”.  
per riportarlo a decimale mi son scritto un loop tipo:

decimale\_x1 = 0  
x=0  
@x1.reverse.each\_char do |binario|  
decimale\_x1 += binario.to\_i \* (2 \*\* x)  
x+=1  
end  
@x1=decimale\_x1

sono costretto a fare cio probabilmente o perchè non ho capito come  
usare i numeri binari in ruby o perchè non trovo un metodo gia scritto  
ad hoc nella classe string.  
essendo che mi perdo ancora nello spulciare le classi built in qualcuno  
cortesemente potrebbe darmi na dritta?  
mmm rileggendo forse non sono stato propio chiarissimo nell’esposizione  
del problema, in ogni caso tagliando la testa al toro: se esiste un  
metodo  
che da decimale mi trova una stringa/binario \<-(to\_s(2)-\>, esiste un  
metodo bult in che fa il contrario?

---

<div class="post-metadata">

**Author:** ![nick\_82](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8baadc/32.png) [@nick\_82](https://www.ruby-forum.com/u/nick_82)\
**Post date:** [March 15, 2011, 12:25pm UTC](https://www.ruby-forum.com/t/domanda-su-numeri-binary/204547/2 "2011-03-15T12:25:55Z")

</div>

Il giorno 15 marzo 2011 11:53, Gennaro FFFF [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> ad hoc nella classe string.  
> essendo che mi perdo ancora nello spulciare le classi built in qualcuno  
> cortesemente potrebbe darmi na dritta?  
> mmm rileggendo forse non sono stato propio chiarissimo nell’esposizione  
> del problema, in ogni caso tagliando la testa al toro: se esiste un  
> metodo  
> che da decimale mi trova una stringa/binario \<-(to\_s(2)-\>, esiste un  
> metodo bult in che fa il contrario?

Usi il metodo to\_i(base) della classe String  
base la base numerica nella quale espresso il valore nella stringa.

esempio:  
irb(main):001:0\> d=192  
irb(main):003:0\> b=d.to\_s(2)  
=\> “11000000”  
irb(main):006:0\> b.to\_i(2)  
=\> 192

Giovanni

---

<div class="post-metadata">

**Author:** ![nick\_82](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8baadc/32.png) [@nick\_82](https://www.ruby-forum.com/u/nick_82)\
**Post date:** [March 15, 2011, 8:17pm UTC](https://www.ruby-forum.com/t/domanda-su-numeri-binary/204547/3 "2011-03-15T20:17:36Z")

</div>

grazie della pronta risposta e dell’aiuto Giovanni.

---

<div class="post-metadata">

**Author:** ![nick\_82](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/8baadc/32.png) [@nick\_82](https://www.ruby-forum.com/u/nick_82)\
**Post date:** [March 16, 2011, 5:23am UTC](https://www.ruby-forum.com/t/domanda-su-numeri-binary/204547/4 "2011-03-16T05:23:29Z")

</div>

2011/3/15 Luigi P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Il giorno 15/mar/2011, alle ore 11.53, Gennaro FFFF ha scritto:
> 
> > del problema, in ogni caso tagliando la testa al toro: se esiste un  
> > metodo  
> > che da decimale mi trova una stringa/binario \<-(to\_s(2)-\>, esiste un  
> > metodo bult in che fa il contrario?

to\_i

> 

Quasi:

> > ‘00110’.to\_i  
> > =\> 110  
> > 0b00110.to\_i  
> > =\> 6

In pratica ruby supporta numeri binari ma solo a livello di literals. Si  
puo’ fare una cosa come:

> > my\_b = ‘0b00110’  
> > =\> “0b00110”  
> > (eval my\_b).to\_i  
> > =\> 6

che fornisce un risultato corretto pur essendo quantomeno sgradevole.  
Sono  
sicuro che esiste qualcosa di meglio ma non mi viene in mente!

Piuttosto, visto che ruby supporta gli operatori bitwise, perche’ non  
fare  
del tutto a meno della rappresentazione binaria?

Ciao
