I'm trying to use baseform to convert numbers in base 10 to base n, how can I make the convertion between, say base 2 to base n?
Baseform seems to always think that the base in expr BaseForm[Expr, n] is always 10.
I'm trying to use baseform to convert numbers in base 10 to base n, how can I make the convertion between, say base 2 to base n?
Baseform seems to always think that the base in expr BaseForm[Expr, n] is always 10.
It should be possible to use notation of the form base^^number inside the BaseForm expression like this:
BaseForm[2^^10101,14]
There are some similar examples under Properties and Relations in the documentation for BaseForm.
BaseForm only works if n is less than 37.
– image_doctor
Jun 11 '12 at 10:57
Here are the above elements wrapped up in function which pulls together the various, or user defined, output forms and lets you switch from any base to any base:
Clear[BaseTranslator];
Options[BaseTranslator] = {BTForm -> BaseForm};
BaseTranslator[number_, base1_, base2_,
OptionsPattern[]] := (OptionValue@BTForm)[
FromDigits[ToString[number], base1], base2]
And some sample usage:
BaseTranslator[100,10,4]
12104
BaseTranslator[100, 10, 4 ,BTForm -> IntegerDigits]
{1, 2, 1, 0}
BaseTranslator[100, 2, 4, BTForm -> IntegerDigits]
{ 1, 0}
BaseTranslator[102, 10, 101, BTForm -> IntegerDigits]
{1, 1}
Since numbers given in base^^ form automatically parse as regular number, it can be at times useful to pass numbers around as strings. For example:
FromDigits["100010011110011", 2]
17651
Different ways to represent that number:
IntegerDigits[17651, 16]
BaseForm[17651, 2]
IntegerString[17651, 2]
{4, 4, 15, 3}
1000100111100112
"100010011110011"
A simplest form for BaseTranslator (https://mathematica.stackexchange.com/users/776/image-doctor):
(*convert stringnumber from base1 to base2*)
convert[stringnumber_, base1_, base2_] :=
BaseForm[FromDigits[stringnumber, base1], base2]
convert["19a", 16, 10](*example 1*)
convert["A", 16, 2] (*example *)
410Subscript[1010, 2]
FromDigits? – b.gates.you.know.what Jun 10 '12 at 12:09