转换十进制< - >十六进制

21 elisp

给定一个十进制数列表,如何将每个数字转换为其等效的十六进制值,反之亦然?

例如:

(convert2hex 255 64 64); -> (FF 40 40)
(convert2dec FF 40 40); -> (255 64 64)

(convert2hex 255 64 64 255 64 64 128)
(convert2dec FF 40 40 FF 40 40 80)

hax*_*ney 30

十六进制数:

(format "%X" 255) ;; => "FF"
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下值填充值:

(format "%03X" 255) ;; => "0FF"
Run Code Online (Sandbox Code Playgroud)

其中0是用于填充的字符,3是要填充的空格数.

十六进制字符串到数字

(string-to-number "FF" 16) ;; => 255
Run Code Online (Sandbox Code Playgroud)

16意思是"读为基础-16".


Gar*_*ees 15

如果您只想在Emacs中键入十六进制数字,则无需调用string-to-number,只需使用#x阅读器语法:

#xFF
==> 255
Run Code Online (Sandbox Code Playgroud)

您还可以使用#b二进制,#o八进制数或#36r基数36:

#b10011001
==> 153
#o777
==> 511
#36rHELLO
==> 29234652
Run Code Online (Sandbox Code Playgroud)

请参阅Emacs Lisp手册中的3.1整数基础知识