bytevector-u8-set!, bytevector-s8-set! - modify a byte in a bytevector
(import (rnrs)) ;R6RS
(import (rnrs bytevectors)) ;R6RS
(import (scheme base)) ;R7RS
(bytevector-u8-set! bytevector k octet)
(bytevector-s8-set! bytevector k byte) ;R6RS
The bytevector-u8-set! procedure stores octet at index k of
bytevector. The bytevector-s8-set! procedure stores the two's
complement representation of byte.
Returns unspecified values.
(let ((b (make-bytevector 16 -127)))
(bytevector-s8-set! b 0 -126)
(bytevector-u8-set! b 1 246)
(list
(bytevector-s8-ref b 0)
(bytevector-u8-ref b 0)
(bytevector-s8-ref b 1)
(bytevector-u8-ref b 1)))
=> (-126 130 -10 246)
The bytevector-s8-set! procedure is absent from R7RS. A possible
implementation is shown below.
(define (bytevector-s8-set! bytevector k byte)
(let ((octet (if (< byte 0) (+ 256 byte) byte)))
(bytevector-u8-set! bytevector k octet)))
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. The index k was not a valid index for
bytevector.