Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to return a fixed length binary representation of an integer in Ruby?

I know that I can use Fixnum#to_s to represent integers as strings in binary format. However 1.to_s(2) produces 1 and I want it to produce 00000001. How can I make all the returned strings have zeros as a fill up to the 8 character? I could use something like:

binary = "#{'0' * (8 - (1.to_s(2)).size)}#{1.to_s(2)}" if (1.to_s(2)).size < 8

but that doesn't seem very elegant.

like image 560
Alexander Popov Avatar asked Nov 08 '13 07:11

Alexander Popov


2 Answers

Use string format.

"%08b" % 1
# => "00000001"
like image 115
sawa Avatar answered Oct 18 '22 06:10

sawa


Using String#rjust:

1.to_s(2).rjust(8, '0')
=> "00000001"
like image 39
falsetru Avatar answered Oct 18 '22 07:10

falsetru