www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - convert base

reply "Hugo" <hff2015 yopmail.com> writes:
How could I convert a number form binary to an arbitrary base 
like 19 or 23?
Jun 01 2015
parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
On 6/1/15 3:43 PM, Hugo wrote:
 How could I convert a number form binary to an arbitrary base like 19 or
 23?
import std.conv; to!(string)(100, 19); // "55" -Steve
Jun 01 2015
parent reply "Hugo" <hff2015 yopmail.com> writes:
On Monday, 1 June 2015 at 19:53:50 UTC, Steven Schveighoffer 
wrote:
 On 6/1/15 3:43 PM, Hugo wrote:
 How could I convert a number form binary to an arbitrary base 
 like 19 or
 23?
import std.conv; to!(string)(100, 19); // "55"
Thanks! Is there a way to specify a source base different than 10? And by the way, this method does not seem to work for bases higher than 36, how could one achieve for example a conversion to a base-60?
Jun 01 2015
parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
On 6/1/15 7:16 PM, Hugo wrote:
 On Monday, 1 June 2015 at 19:53:50 UTC, Steven Schveighoffer wrote:
 On 6/1/15 3:43 PM, Hugo wrote:
 How could I convert a number form binary to an arbitrary base like 19 or
 23?
import std.conv; to!(string)(100, 19); // "55"
Thanks! Is there a way to specify a source base different than 10?
A "source base"? the source base is always binary :) If you want to go between base string representation, there is parse for going from string to binary.
 And by the way, this method does not seem to work for bases higher than
 36, how could one achieve for example a conversion to a base-60?
35 in base-36 is Z. What is 36 in base-37? At some point you run out of alphabet. -Steve
Jun 01 2015
parent reply "Hugo" <hff2015 yopmail.com> writes:
On Tuesday, 2 June 2015 at 00:00:43 UTC, Steven Schveighoffer 
wrote:
 On 6/1/15 7:16 PM, Hugo wrote:
 Thanks! Is there a way to specify a source base different than 
 10?
A "source base"? the source base is always binary :) If you want to go between base string representation, there is parse for going from string to binary.
What I meant was for example being able to pass from console as an argument the number to convert lets say in hexadecimal, octal or binary representation. I will check parse though, thanks.
 And by the way, this method does not seem to work for bases 
 higher than
 36, how could one achieve for example a conversion to a 
 base-60?
35 in base-36 is Z. What is 36 in base-37? At some point you run out of alphabet.
Well.. that depends on what you accept as valid characters, doesn't it? Base-64 is a good example.
Jun 01 2015
parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
On 6/1/15 8:36 PM, Hugo wrote:
 On Tuesday, 2 June 2015 at 00:00:43 UTC, Steven Schveighoffer wrote:
 On 6/1/15 7:16 PM, Hugo wrote:
 Thanks! Is there a way to specify a source base different than 10?
A "source base"? the source base is always binary :) If you want to go between base string representation, there is parse for going from string to binary.
What I meant was for example being able to pass from console as an argument the number to convert lets say in hexadecimal, octal or binary representation. I will check parse though, thanks.
Yes, use std.conv.parse: auto binRepresentation = parse!long("1a2b", 16); // read hex
 And by the way, this method does not seem to work for bases higher than
 36, how could one achieve for example a conversion to a base-60?
35 in base-36 is Z. What is 36 in base-37? At some point you run out of alphabet.
Well.. that depends on what you accept as valid characters, doesn't it? Base-64 is a good example.
This means 'A' and 'a' have 2 different values. I don't think a general function such as to with radix is good for this. You can probably do better with a custom function, I'm not sure if there's any base-64 libraries out there. -Steve
Jun 01 2015
parent ketmar <ketmar ketmar.no-ip.org> writes:
On Mon, 01 Jun 2015 21:43:56 -0400, Steven Schveighoffer wrote:

 I don't think a general function such as to with radix is good for this.
 You can probably do better with a custom function, I'm not sure if
 there's any base-64 libraries out there.
std.base64? ;-)=
Jun 02 2015