数组pack指令

下表列出了方法 Array#pack 的压缩指令。

指令 描述
@ 移动到绝对位置。
A ASCII 字符串(填充 space,count 是宽度)。
a ASCII 字符串(填充 null,count 是宽度)。
B 位字符串(降序)
b 位字符串(升序)。
C 无符号字符。
c 字符。
D, d 双精度浮点数,原生格式。
E 双精度浮点数,little-endian 字节顺序。
e 单精度浮点数,little-endian 字节顺序。
F, f 单精度浮点数,原生格式。
G 双精度浮点数,network(big-endian)字节顺序。
g 单精度浮点数,network(big-endian)字节顺序。
H 十六进制字符串(高位优先)。
h 十六进制字符串(低位优先)。
I 无符号整数。
i 整数。
L 无符号 long。
l Long。
M 引用可打印的,MIME 编码。
m Base64 编码字符串。
N Long,network(big-endian)字节顺序。
n Short,network(big-endian)字节顺序。
P 指向一个结构(固定长度的字符串)。
p 指向一个空结束字符串。
Q, q 64 位数字。
S 无符号 short。
s Short。
U UTF-8。
u UU 编码字符串。
V Long,little-endian 字节顺序。
v Short,little-endian 字节顺序。
w BER 压缩的整数 \fnm。
X 向后跳过一个字节。
x Null 字节。
Z 与 a 相同,除了 null 会被加上 *。

实例

数组压缩数据

尝试下面的实例,压缩各种数据

#!/usr/bin/ruby -w # -*- coding : utf-8 -*- puts "HaiCoder(www.haicoder.net)" a = [ "a", "b", "c" ] n = [ 65, 66, 67 ] puts a.pack("A3A3A3") #=> "a b c " puts a.pack("a3a3a3") #=> "a\000\000b\000\000c\000\000" puts n.pack("ccc") #=> "ABC"

以上实例运行输出结果为:

06_Ruby数组pack指令.png

我们使用了 pack 压缩了数组。