Я полностью все еще не убежден, почему на некоторых языках это прокладывает себе путь, и некоторым другим способом. В языке 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. Кажется, что здесь существует решение реализации, к которому различные языки приближаются отличными способами. Я хотел бы понять то, что является решением, точно.
Вы можете использовать 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
>>>