Python: двоичное/шестнадцатеричное преобразование строк?

Я полностью все еще не убежден, почему на некоторых языках это прокладывает себе путь, и некоторым другим способом. В языке Common LISP это похоже на Python:

(defvar *flist* '())

(dotimes (i 3 t)
  (setf *flist* 
    (cons (lambda (x) (* x i)) *flist*)))

(dolist (f *flist*)  
  (format t "~a~%" (funcall f 2)))

Печать "6 6 6" (отмечают, что здесь список от 1 до 3, и создан наоборот"). В то время как в Схеме это работает как в Perl:

(define flist '())

(do ((i 1 (+ 1 i)))
    ((>= i 4))
  (set! flist 
    (cons (lambda (x) (* i x)) flist)))

(map 
  (lambda (f)
    (printf "~a~%" (f 2)))
  flist)

Печать "6 4 2"

И как я уже упомянул, JavaScript находится в лагере Python/CL. Кажется, что здесь существует решение реализации, к которому различные языки приближаются отличными способами. Я хотел бы понять то, что является решением, точно.

14
задан Peter Mortensen 8 October 2009 в 23:48
поделиться

1 ответ

Вы можете использовать ord и hex следующим образом:

>>> s = 'some string'
>>> hex_chars = map(hex,map(ord,s))
>>> print hex_chars
['0x73', '0x6f', '0x6d', '0x65', '0x20', '0x73', '0x74', '0x72', '0x69', '0x6e', '0x67']
>>> hex_string = "".join(c[2:4] for c in hex_chars)
>>> print hex_string
736f6d6520737472696e67
>>>

Или используйте встроенную кодировку:

>>> s = 'some string'
>>> print s.encode('hex_codec')
736f6d6520737472696e67
>>>
24
ответ дан 1 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: