Get ascii value of a character

Student & New to elixir. Nice language.
I want to convert a english character, e.g. “a”, which is stored in a variable, to it’s ascii value, but I can’t find the function (I found similiar one for << 255 :: utf8 >> but didn’t work for ascii value)
and syntax like ?a didn’t work for variable.
Appreciated for you help!

2 Likes

?a gives you the Unicode codepoint of a as an integer, the first 128 (0 to 127) codepoints are equivalent to US-ASCII.

So I’m not sure what your problem is.

1 Like

Here’s two ways to do it:

iex(9)> var = "a"
"a"
iex(10)> <<v::utf8>> = var
"a"
iex(11)> v
97
iex(12)> var |> String.to_charlist |> hd
97
14 Likes

Thank you!!!
That’s a very nice solution involving pattern matching!
Didn’t see that coming

If you are certain you are working with ASCII (ie single byte code points) then you can also:

iex> :binary.first "abcdef"
97

But @gregvaughn’s approach would be preferred since it will work with any UTF-8 string.

5 Likes