Complexity Shock Horror II: the Sequel (was Re: MD5 in erlang
Mon Mar 31 14:31:45 CEST 2003
Some comments and some problems. Since Erlang supports the Base#Integer
syntax i think that Base in:
should be 2..16, not atoms.
The same for:
But what should happen if you call list_to_integer("16#1f", 8), and how
should you specify any base. I guess the answers are: badarg on the
first and list_to_integer("16#1f", undefined) on the second question.
And to add the prefix in the Right(tm) way is a bit awkward:
List = case integer_to_list(Integer, 16) of
[$-|L] -> "-16#"++L;
L -> "16#"++L
Tony Rogvall wrote:
> Raimo Niskanen wrote:
>> I am about to add your requested functionality to io_lib:format, so I
>> thought about adding these BIFs too, but it turned out that it was
>> hard to decide what they should do, exactly: Erlang-style prefix or
>> not, lowercase or UPPERCASE or selectable and how to select, how to
>> select any-base for list_to_integer/2, etc.
>> It started to seem that an option list was needed with quite some
>> options, and then they suddenly did seem too complicated to be BIFs.
> Here is one suggestion for R9C
> integer_to_list(Integer, Base)
> where integer(Integer) and Base = bin | oct | hex or dec
> - The prefix is not needed sice it is a constant op to cons "16#" or
> whatever as a prefix.
> - The case is not very important for hex numbers since most "readers"
> can read both upper an lower case, correct me I you ever seen any
> software (not your own:-) that care about case in hex numbers! . I vote
> for uppercase, since that what is what I have seen most. If it should be
> a problem then we can add 'heX' as uppercase option.
> I wonder how many times I have written integer_to_hex? I am sure it must
> be 100 times...
> When we are at it, why not do the same thing for list_to_integer?
> I suggest:
> list_to_integer(List, Base) (base = bin | oct | hex | dec )
> possibly allowing base spec in the list_to_integer/1 i.e
> Raimo you can give me a call, I will be glad to help you :-)
>> So I hope it will do to use something like
>> lists:flatten(io_lib:format("~16b", [Integer])).
>> If it is necessary for performance reasons, we might add these BIFs
> Why wait ? I do not think we can talk us out of this one :-)
More information about the erlang-questions