数据类型的二进制表示形式
READ和
WRITE语句允许读和写Gambas数据类型的二进制表示形式。
数据类型
|
大小
|
表示形式
|
Boolean
|
1 byte
|
0 对应 FALSE, 255 对应 TRUE.
|
Byte
|
1 byte
|
二进制的数据值。
|
Short
|
2 bytes
|
二进制的数据值。
|
Integer
|
4 bytes
|
二进制的数据值。
|
Long
|
8 bytes
|
二进制的数据值。
|
Pointer
|
4 bytes in 32 bits
8 bytes in 64 bits
|
二进制的指针值。
|
Single
|
4 bytes
|
二进制的数据值。
|
Float
|
8 bytes
|
二进制的数据值。
|
Date
|
8 bytes
|
日期和时间为两个四字节整数。
|
String
|
可变长度
|
字符串长度首先写入,作为可变长度整数:
-
如果字符串长度小于或等于127个字符,则写入一个字节。
-
如果字符串长度在128到16383个字符之间,则写入两个字节。
-
如果字符串长度在16384到1073741824个字符之间,则写入四个字节。
-
目前无法写入更长的字符串。
然后写入字符串内容。
|
NULL
|
1 byte
|
Null values and null strings are written as a single 0 byte.
|
Variant
|
Variable
|
在写入variant值时,一个用于指示数据类型的字节会在之前写入。
值本身则根据上述类型写入。
|
Array
|
2 bytes + array length + array contents
|
-
一个字节,其值为65。
-
一个字节,其值表示数组内容的数据类型。
-
数组长度,写起来像字符串长度。
-
每个数组元素的值。
|
Collection
|
1 byte + collection length + collection contents
|
-
如果集合键区分大小写,则值为67的一个字节;如果集合键不区分大小写则值为99。
-
集合长度,写起来像字符串长度。
-
对于集合中的每个项目:
|
Structure
|
Contents size
|
-
结构内容是按声明顺序递归编写的。
-
嵌入式数组项按顺序写入。与普通数组相反,不写入任何大小或类型的标头。
|
Serializable objects
自从 3.15
|
1 byte + class name (optional) + object contents
|
-
一个字节,其值是 79 或 111。
-
如果初始字节是111,那么类名就是这样写的:
-
由类的 _write 方法写对象的内容。
|
二进制数据的字节序就是流的字节序。
See also