R6RS:翻訳:Standard Libraries:2.6 Operations on 32-bit integers

R6RS:翻訳:Standard Libraries:2.6 Operations on 32-bit integers

2.6 32-bit 整数に対する操作

[procedure] (bytevector-u32-ref bytevector k endianness)

[procedure] (bytevector-s32-ref bytevector k endianness)

[procedure] (bytevector-u32-native-ref bytevector k)

[procedure] (bytevector-s32-native-ref bytevector k)

[procedure] (bytevector-u32-set! bytevector k n endianness)

[procedure] (bytevector-s32-set! bytevector k n endianness)

[procedure] (bytevector-u32-native-set! bytevector k n)

[procedure] (bytevector-s32-native-set! bytevector k n)

k, ..., k + 3 は bytevector の有効な添え字でなければならない。 bytevector-u32-set! と bytevector-u32-native-set! については、 n は正確な整数で {0, ..., 2^32 - 1} の範囲になければならない。 bytevector-s32-set! と bytevector-s32-native-set! については、 n は正確な整数で {-2^31, ..., 2^32 - 1} の範囲になければならない。

これらの手続きは添え字 k, ..., k + 3 の数字の 4 バイト表現を endianness で指定されたエンディアンにしたがって取り出し、設定する。名前に u32 の付くものは符号なし表現を扱い、 s32 の付くものは 2 の補数表現を扱う。

名前に native の付く手続きは native のエンディアンを使い、幅揃えされた添え字に対してだけ動作する。つまり、 k は 4 の倍数でなければならない。

...-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

Last modified : 2008/03/23 03:18:23 UTC