R6RS:翻訳:Standard Libraries:2.5 Operations on 16-bit integers
2.5 16-bit 整数に対する操作
[procedure] (bytevector-u16-ref bytevector k endianness)
[procedure] (bytevector-s16-ref bytevector k endianness)
[procedure] (bytevector-u16-native-ref bytevector k)
[procedure] (bytevector-s16-native-ref bytevector k)
[procedure] (bytevector-u16-set! bytevector k n endianness)
[procedure] (bytevector-s16-set! bytevector k n endianness)
[procedure] (bytevector-u16-native-set! bytevector k n)
[procedure] (bytevector-s16-native-set! bytevector k n)
k は bytevector の有効な添え字でなければならない。すなわち k + 1 でなければならない。 bytevector-u16-set! と bytevector-u16-native-set! については、 n は正確な整数で {0, ..., 216 - 1} の範囲になければならない。 bytevector-s16-set! と bytevector-s16-native-set! については、 n は正確な整数で {-2^15, ..., 2^15 - 1} の範囲になければならない。
これらの手続きは添え字 k と k + 1 の数字の 2 バイト表現を endianness で指定されたエンディアンにしたがって取り出し、設定する。名前に u16 の付くものは符号なし表現を扱い、 s16 の付くものは 2 の補数表現を扱う。
名前に native の付く手続きは native のエンディアンを使い、幅揃えされた添え字に対してだけ動作する。つまり、 k は 2 の倍数でなければならない。
...-set! 手続きは未規定値を返す。
(define b (u8-list->bytevector ’(255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253))) (bytevector-u16-ref b 14 (endianness little)) ⇒ 65023 (bytevector-s16-ref b 14 (endianness little)) ⇒ -513 (bytevector-u16-ref b 14 (endianness big)) ⇒ 65533 (bytevector-s16-ref b 14 (endianness big)) ⇒ -3 (bytevector-u16-set! b 0 12345 (endianness little)) (bytevector-u16-ref b 0 (endianness little)) ⇒ 12345 (bytevector-u16-native-set! b 0 12345) (bytevector-u16-native-ref b 0) ⇒ 12345 (bytevector-u16-ref b 0 (endianness little)) ⇒ unspecified