For Development HEAD DRAFTSearch (procedure/syntax/module):

11.18 srfi.74 - オクテットを単位とするバイナリブロック

Module: srfi.74

このモジュールは、オクテットの列であるblobを扱う手続きを提供します。 Gaucheではblobは単なるu8vectorです。

このモジュールの機能はほとんどbinary.ioモジュールにあり、 実際、binary.ioの薄いラッパーとして実装されています (binary.io - バイナリI/O)。 このモジュールは互換性のために提供されています。Gauche専用のコードを書くなら binary.ioを直接使うのが良いでしょう。

Macro: endianness e

[SRFI-74]{srfi.74} eはシンボルbiglittlenativeのいずれかでなければ なりません。これは、エンディアンネスを示す実装依存のオブジェクトへと展開されます。 Gaucheではそれは単なるシンボルです。詳しくはエンディアンネスを参照してください。

Function: make-blob size

[SRFI-74]{srfi.74} sizeオクテットの大きさを持つblobを新に作って返します。 Gaucheではこれは(make-u8vector size)と同じです。

Function: blob? obj

[SRFI-74]{srfi.74} objがblogなら#tを、そうでなければ#fを返します。 Gaucheではこれは(u8vector? obj)と同じです。

Function: blob-length blob

[SRFI-74]{srfi.74} blogのオクテットで測ったサイズを返します。 Gaucheeではこれは(u8vector-length blob)と同じです。

Function: blob-uint-ref size endian blob pos
Function: blob-sint-ref size endian blob pos

[SRFI-74]{srfi.74} sizeオクテットからなる符号なし/符号つき整数を、blobpos オクテット目から取り出します。

これはそれぞれ、binary.ioモジュールを使った (get-uint size blob pos endian)および (get-sint size blob pos endian)のラッパーです (binary.io - バイナリI/O)。 ただし、blob-uint-ref/blob-sint-refblobとしてu8vectorしか受け付けません。

Function: blob-uint-set! size endian blob pos val
Function: blob-sint-set! size endian blob pos val

[SRFI-74]{srfi.74} sizeオクテットからなる符号なし/符号つき整数valを、 blobposオクテット目から格納します。

これはそれぞれ、binary.ioモジュールを使った (put-uint! size blob pos val endian)および (put-sint! size blob pos val endian)のラッパーです (binary.io - バイナリI/O)。 ただし、blob-uint-set!/blob-sint-set!blobとしてu8vectorしか受け付けません。

Function: blob-u8-ref blob pos
Function: blob-u8-set! blob pos val
Function: blob-s8-ref blob pos
Function: blob-s8-set! blob pos val

[SRFI-74]{srfi.74} 1オクテットの符号つき/符号なし整数をblobpos位置から読み出し/に書き込みます。

これらはそれぞれ、binary.ioモジュールの get-u8put-u8!get-s8およびput-s8!と同じです。

Function: blob-u16-ref endian blob pos
Function: blob-u16-set! endian blob pos val
Function: blob-s16-ref endian blob pos
Function: blob-s16-set! endian blob pos val
Function: blob-u32-ref endian blob pos
Function: blob-u32-set! endian blob pos val
Function: blob-s32-ref endian blob pos
Function: blob-s32-set! endian blob pos val
Function: blob-u64-ref endian blob pos
Function: blob-u64-set! endian blob pos val
Function: blob-s64-ref endian blob pos
Function: blob-s64-set! endian blob pos val

[SRFI-74]{srfi.74} それぞれのサイズの符号つき/符号なし整数を blobpos位置からendianのバイトオーダで読み出し/に書き込みます。

これらはそれぞれ、binary.ioモジュールの get-XXおよびput-XX!手続きのラッパーです。 引数順序が異なることに注意してください。

Function: blob-u16-native-ref blob pos
Function: blob-u16-native-set! blob pos val
Function: blob-s16-native-ref blob pos
Function: blob-s16-native-set! blob pos val
Function: blob-u32-native-ref blob pos
Function: blob-u32-native-set! blob pos val
Function: blob-s32-native-ref blob pos
Function: blob-s32-native-set! blob pos val
Function: blob-u64-native-ref blob pos
Function: blob-u64-native-set! blob pos val
Function: blob-s64-native-ref blob pos
Function: blob-s64-native-set! blob pos val

[SRFI-74]{srfi.74} それぞれのサイズの符号つき/符号なし整数を blobpos位置からネイティブバイトオーダで読み出し/に書き込みます。

これらはそれぞれ、binary.ioモジュールの get-XXおよびput-XX!手続きのラッパーです。 引数順序が異なることに注意してください。

註: SRFI-74は、これらの手続きはposがアラインされている場合、 すなわち扱う整数のオクテットでの大きさの整数倍のときだけ動作すれば良いとしています。 Gaucheではそういう制約はありませんが、ポータブルなコードを書く場合は気をつけて下さい。

Function: blob=? blob1 blob2

[SRFI-74]{srfi.74} これはgauche.uvectoru8vector=?と同じです。

Function: blob-copy! src sstart target tstart n

[SRFI-74]{srfi.74} blobであるsrcssatrtからnオクテットを、 target blobのtstartからの位置にコピーします。

引数の順序が他の*-copy!手続きと異なっているのに注意してください (R7RSのstring-copy!vector-copy!、およびgauche.uvectoru8vector-copy!等は、(*-copy! target tstart src sstart send) という順序で引数を取ります。)

Function: blob-copy blob

[SRFI-74]{srfi.74} blobの新たなコピーを返します。 gauche.uvectou8vector-copyと同じです。

Function: blob->u8-list blob
Function: u8-list->blob list

[SRFI-74]{srfi.74} u8vector->listおよびlist->u8vectorのラッパーです。 ただし、省略可能なstart/end引数は取りません。

Function: blob->uint-list size endian blob
Function: blob->sint-list size endian blob

[SRFI-74]{srfi.74} それぞれsizeオクテットからなる、バイトオーダーendianの符号つき/符号なし 整数を連続してblobから読み出し、リストにして返します。

(blob->uint-list 3 (endianness big) '#u8(0 0 1 0 0 2 0 0 3))
  ⇒ (1 2 3)
Function: uint-list->blob size endian list
Function: sint-list->blob size endian list

[SRFI-74]{srfi.74} 符号なし/符号つき整数のリストlistをblobにして返します。 作られるblobの大きさは(* size (length list))オクテットで、 sそれぞれの整数がsizeオクテットを占めます。

(uint-list->blob 3 (endianness little) '(1 2 3))
  ⇒ #u8(1 0 0 2 0 0 3 0 0)


For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT