Scheme Programmer's Manual

NAME

u8-list->bytevector, sint-list->bytevector, uint-list->bytevector - convert a list of integers to a bytevector

LIBRARY

(import (rnrs))                     ;R6RS
(import (rnrs bytevectors))         ;R6RS

SYNOPSIS

(u8-list->bytevector list)
(sint-list->bytevector list endianness size)
(uint-list->bytevector list endianness size)

DESCRIPTION

These procedures convert a list of exact integers to a bytevector according to size and endianness. The integers are encoded in the same order as they appear in list.

The sint-list->bytevector procedure uses the two's complement representation and uint-list->bytevector is for unsigned integers. The u8-list->bytevector procedure is the same as bytevector->uint-list with a size of 1.

RETURN VALUES

Returns a newly allocated bytevector.

EXAMPLES

(u8-list->bytevector '(1 2 3))
          => #vu8(1 2 3)

(uint-list->bytevector '(#xAA55 #x55AA #x4200) (endianness big) 2)
          => #vu8(#xAA #x55 #x55 #xAA #x42 #x0)

(sint-list->bytevector '(-2 -1 0 1 2) (endianness little) 1)
          => #vu8(254 255 0 1 2)

(let ((b (u8-list->bytevector '(1 2 3 255 1 2 1 2))))
  (bytevector->sint-list b (endianness little) 2))
          => (513 -253 513 513)

(let ((b (u8-list->bytevector '(1 2 3 255 1 2 1 2))))
  (bytevector->uint-list b (endianness little) 2))
          => (513 65283 513 513)

COMPATIBILITY

The u8-list->bytevector procedure is absent from R7RS-small. You can use the bytevector(3) procedure instead, but it uses a variable argument list, which is usually less efficient. The other procedures have no equivalent in R7RS-small.

If the returned bytevector would be empty then the returned bytevector does not have to be newly allocated.

ERRORS

This procedure can raise exceptions with the following condition types:
&assertion (R6RS)
The wrong number of arguments was passed or an argument was outside its domain.

SEE ALSO

make-bytevector(3), bytevector->u8-list(3), bytevector(3), endianness(7)

STANDARDS

R6RS

HISTORY

These procedures are new for R6RS, where they were based on SRFI-74.

AUTHORS

This page is part of the scheme-manpages project. It includes materials from the RnRS documents. More information can be found at

Index

NAME
LIBRARY
SYNOPSIS
DESCRIPTION
RETURN VALUES
EXAMPLES
COMPATIBILITY
ERRORS
SEE ALSO
STANDARDS
HISTORY
AUTHORS
Return to Main Contents