[plt-scheme] FFI and MD5
Woodhouse, Gregory J. skrev:
> Well, that's a Unicode string, and if it is encoded as UTF-8, then it's not surprising that the likes of 1d are encoded a single bytes, but higher valued codepoints are encoded as multiple bytes. Just a guess.
For a second, I thought, you had the solution, but ...
If I use list->bytes instead of integer->string, then I get:
(define (md5 d)
(let ([md (MD5 d #f)])
(let loop ([i 0] [cs '()])
(if (= i 16)
(list->bytes (reverse cs))
(loop (+ i 1) (cons (ptr-ref md _byte i) cs))))))
I get:
> (md5 #"")
#"\324\35\214\331\217\0\262\4\351\200\t\230\354\370B~"
and I was expecting:
#"d41d8cd98f00b204e9800998ecf8427e"
--
Jens Axel Søgaard