Conversion of a binary number into decimal format.
## Function to convert a given binary string into decimal number
def bin2dec(number)
ret_dec = 0;
number.split(//).each{|digit|
ret_dec = (Integer(digit) + ret_dec) * 2;
}
return ret_dec/2;
end
print bin2dec('101'),"\n";
## OR you can use this one too
number = "1111";
print Integer("0b"+number), "\n"; ## appending 0b will work for binary
Conversion of a decimal number into hexa decimal format
## Function to convert a given integer string/number into hexa decimal string
def dec2hex(number)
number = Integer(number);
hex_digit = "0123456789ABCDEF".split(//);
ret_hex = '';
while(number != 0)
ret_hex = String(hex_digit[number % 16 ] ) + ret_hex;
number = number / 16;
end
return ret_hex; ## Returning HEX
end
print dec2hex("255"),"\n";
Conversion of decimal into binary format
## Function to convert a given integer string/number into binary formatted string
def dec2bin(number)
number = Integer(number);
if(number == 0)
return 0;
end
ret_bin = "";
## Untill val is zero, convert it into binary format
while(number != 0)
ret_bin = String(number % 2) + ret_bin;
number = number / 2;
end
return ret_bin;
end
print dec2bin("19"),"\n";
Conversion of Hex to Decimal number
number = "FF";
print number.hex,"\n"; ## This will convert a hexa string into int
print Integer("0x"+number), "\n"; ## this will work too
Conversion of octal into decimal number
number = "255";
print number.oct,"\n"; ## oct will convert into decimal
print Integer("0o"+number), "\n"; ## appending 0o will work too
Using the provided examples, you can easily convert the other base conversion task easily. If anyone know the ruby library that can do the task with a single function call, pls post at comment section.
3 comments:
you can use
>> "101".to_i(2)
=> 5
and
>> 5.to_s(2)
=> "101"
to convert to other bases pretty easily (the base is the argument)
See
http://www.ruby-doc.org/core/classes/String.html#M000802
Thanks so much for sharing the bin2dec and dec2hex functions! I was just looking for something like this - very beneficial - thanks very very much!
another two neat tricks:
puts 0b1011 ## 11
puts 11[0] ## 1
puts 11[1] ## 1
puts 11[2] ## 0
puts 11[3] ## 1
puts 11[4] ## 0 -- from this point - 0s
check my blog - scraping with ruby :)
http://rubyscraping.wordpress.com
Post a Comment