tutorial source para descargar code elisp

elisp - para - emacs source code



Convertir decimal<-> hexadecimal (4)

Dada una lista de números decimales, ¿cómo se puede convertir cada número a su valor hexadecimal equivalente y viceversa?

Por ejemplo:

(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)


Estaba interesado en convertir caracteres octales en caracteres hexadecimales en un archivo fuente.

Quería consultar la búsqueda y reemplazar en el siguiente texto:

''/0'' -> "//0", // Null ''/7'' -> "//a", // Bell (^G) ''/b'' -> "//b", // Backspace (^H) ''/13'' -> "//v", // Vertical tab (^K) ''/33'' -> "//e", // Escape (^[)

Aquí estaba la expresión regular de búsqueda y reemplazo

CM-%

''///([0-9]+/)''

JUBILADO

''/,(format "//0x%04X" (string-to-number /1 8))''

JUBILADO

El resultado es:

''/0x0000'' -> "//0", // Null ''/0x0007'' -> "//a", // Bell (^G) ''/b'' -> "//b", // Backspace (^H) ''/0x000B'' -> "//v", // Vertical tab (^K) ''/0x001B'' -> "//e", // Escape (^[)


Número a hexadecimal:

(format "%X" 255) ;; => "FF"

También puede rellenar con cero el valor con:

(format "%03X" 255) ;; => "0FF"

Donde 0 es el carácter que se usa para el relleno y 3 es el número de espacios para rellenar.

Cadena hexagonal a número

(string-to-number "FF" 16) ;; => 255

El 16 significa "leído como base-16".


Si solo desea escribir un número hexadecimal en Emacs, no es necesario llamar string-to-number , solo use la sintaxis del lector #x :

#xFF ==> 255

También puede usar #b para binarios, #o para números octales, o #36r para base 36:

#b10011001 ==> 153 #o777 ==> 511 #36rHELLO ==> 29234652

Consulte la sección 3.1 Conceptos básicos sobre enteros en el Manual de Emacs Lisp


También puede establecer la variable *print-base* en 16. Puede hacerlo globalmente:

(setf *print-base* 16) (print ''(10 20 30 40)) => (A 14 1E 28)

o localmente:

(let ((*print-base* 16)) (dolist (c ''(10 20 30 40)) (print c))) =>A 14 1E 28 NIL