Ron
Ron

Reputation: 2019

Emacs Lisp: getting ascii value of character

I'd like to translate a character in Emacs to its numeric ascii code, similar to casting char a = 'a'; int i = (int)a in c. I've tried string-to-number and a few other functions, but none seem to make Emacs read the char as a number in the end.

What's the easiest way to do this?

Upvotes: 10

Views: 5932

Answers (3)

Andreas Röhler
Andreas Röhler

Reputation: 4804

To get the ascii-number which represents the character --as Drew said-- put a question mark before the character and evaluate that expression

?a ==> 97

Number appears in minibuffer, with C-u it's written behind expression.

Also the inverse works

(insert 97) will insert an "a" in the buffer.

BTW In some cases the character should be quoted

?\" will eval to 34

Upvotes: 16

Drew
Drew

Reputation: 30701

A character is a whole number in Emacs Lisp. There is no separate character data type.

Function string-to-char is built-in, and does what you want. (string-to-char "foo") is equivalent to (aref "foo" 0), which is @abo-abo's answer --- but it is coded in C.

Upvotes: 8

abo-abo
abo-abo

Reputation: 20342

String is an array.

(aref "foo" 0)

Upvotes: 7

Related Questions