fix {s,u}int-list->bytevector (PR 9916)
svn: r12459
This commit is contained in:
parent
015503bde3
commit
69fdabf0a0
|
@ -311,16 +311,17 @@
|
|||
(bytevector->int-list 'bytevector->sint-list bytevector-sint-ref bv endianness size))
|
||||
|
||||
(define (int-list->bytevector who signed? set l endianness size)
|
||||
(unless (list? l)
|
||||
(unless (mlist? l)
|
||||
(raise-type-error who "list" l))
|
||||
(check-endian endianness)
|
||||
(unless (exact-positive-integer? size)
|
||||
(raise-type-error who "exact positive integer" size))
|
||||
(let* ([len (length l)]
|
||||
(let* ([l (mlist->list l)]
|
||||
[len (length l)]
|
||||
[bv (make-bytes (* size len))])
|
||||
(for ([v (in-list l)]
|
||||
[k (in-naturals)])
|
||||
(set l k v endianness size))
|
||||
(set bv (* k size) v endianness size))
|
||||
bv))
|
||||
|
||||
(define (uint-list->bytevector l endianness size)
|
||||
|
|
|
@ -277,6 +277,21 @@
|
|||
(test (let ((b (u8-list->bytevector '(1 2 3 255 1 2 1 2))))
|
||||
(bytevector->uint-list b 'little 2))
|
||||
'(513 65283 513 513))
|
||||
(test (bytevector->u8-list
|
||||
(uint-list->bytevector '(513 65283 513 513) 'little 2))
|
||||
'(1 2 3 255 1 2 1 2))
|
||||
(test (bytevector->u8-list
|
||||
(uint-list->bytevector '(513 65283 513 513) 'big 2))
|
||||
'(2 1 255 3 2 1 2 1))
|
||||
(test (let ((b (u8-list->bytevector '(1 2 3 255 1 2 1 2))))
|
||||
(bytevector->sint-list b 'little 2))
|
||||
'(513 -253 513 513))
|
||||
(test (let ((b (u8-list->bytevector '(2 1 255 3 2 1 2 1))))
|
||||
(bytevector->sint-list b 'big 2))
|
||||
'(513 -253 513 513))
|
||||
(test (bytevector->u8-list
|
||||
(sint-list->bytevector '(513 -253 513 513) 'little 2))
|
||||
'(1 2 3 255 1 2 1 2))
|
||||
(test (let ((b (u8-list->bytevector '(1 2 3 255 1 2 1 2))))
|
||||
(bytevector->sint-list b 'little 2))
|
||||
'(513 -253 513 513))
|
||||
|
|
Loading…
Reference in New Issue
Block a user