Преобразование байтовой строки в Int в схеме

У меня есть такой код для преобразования шестнадцатеричного кода в байтовую строку

(define (word->bin s)
  (let ((n (string->number s)))
    (bytes (bitwise-and (arithmetic-shift n -24) #xFF)
    (bitwise-and (arithmetic-shift n -16) #xFF)
    (bitwise-and (arithmetic-shift n -8) #xFF)
    (bitwise-and n #xFF))))
(word->bin "#x10000002")

Я думаю об аналогичной функции для преобразования двоичного кода в целые числа, а затем его распечатки. Конечным результатом является двоичный код, переведенный в шестнадцатеричный формат. Некоторые полезные ссылки: http://download.plt-scheme.org/doc/372/html/mzscheme/mzscheme-ZH-11.html#node_sec_11.2.1

http://docs.plt-scheme.org/reference/bytestrings.html# (def. ((quote. ~ 23 ~ 25kernel) ._ bytes- ~ 3estring / utf -8))


person yuguang    schedule 20.10.2009    source источник


Ответы (1)


Я не уверен, что это именно то, что вы ищете, или даже если вы используете PLT, но если да, то вам следует посмотреть на функции integer-bytes->integer и integer->integer-bytes, которые включены в PLT. Обратите внимание, что они создают байтовые строки с двоичным содержимым, поэтому оно может отличаться от того, что вы пытаетесь сделать здесь.

(А если вы используете версию 372, вам действительно стоит обновить ее.)

person Eli Barzilay    schedule 20.10.2009
comment
Что ж, если это часть домашнего задания, учитель может попросить вас написать решение. - person Eli Barzilay; 21.10.2009