Tell me more ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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.

share|improve this question
1  
Maybe using FromDigits ? – b.gatessucks Jun 10 '12 at 12:09
Thanks, it's also a viable alternative. – Gustavo Bandeira Jun 10 '12 at 12:14

3 Answers

up vote 14 down vote accepted

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.

share|improve this answer
Thanks buddy. I've read about it yesterday but it was kinda unclear to me. – Gustavo Bandeira Jun 10 '12 at 12:13
2  
Whilst looking inside a discarded Stanford Bunny, I discovered a note saying that BaseForm only works if n is less than 37. – image_doctor Jun 11 '12 at 10:57
@image_doctor I_swear_ I once was calling Stephen W. names b/c of that – belisarius Jun 12 '12 at 3:42
1  
@image_doctor of course as that takes you to the limit of English language keyboards. Besides, base 36 allows you to write all the rude messages you wish, unlike base 16. What is DEADBEEF, anyway? – rcollyer Jun 13 '12 at 3:41
@rcollyer :) and I thought the answer was FORTYTWO. – image_doctor Jun 13 '12 at 8:25

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"

share|improve this answer
You could have kept the %, I understand its usage. Supposing the change had that as justification. – Gustavo Bandeira Jun 10 '12 at 12:23
@Gustavo no, I was typing faster than I could think again and making silly errors. I meant BaseForm but wrote NumberForm, etc. I think it's fixed now. – Mr.Wizard Jun 10 '12 at 12:26

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}

share|improve this answer
Not much love for this answer .. where does it go wrong ? :) – image_doctor Jun 10 '12 at 20:43
Votes are elusive phantoms – belisarius Jun 10 '12 at 22:37
1  
@belisarius :), I've had some success using a Laplacian of Gaussian to improve the definition of the phantom phantom and it is becoming increasingly obvious that the element that was missing from this answer is resolving towards the Stanford Bunny. – image_doctor Jun 11 '12 at 9:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.