当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby String.unpack1用法及代码示例


本文简要介绍ruby语言中 String.unpack1 的用法。

用法

unpack1(format) → obj
unpack1(format, offset: anInteger) → obj

根据格式字符串解码str(可能包含二进制数据),返回提取的第一个值。

另见 String#unpack Array#pack

String#unpack 对比:

"abc \0\0abc \0\0".unpack('A6Z6')   #=> ["abc", "abc "]
"abc \0\0abc \0\0".unpack1('A6Z6')  #=> "abc"

在这种情况下,数据会丢失,但通常情况下数组只保存一个值,尤其是在解包二进制数据时。例如:

"\xff\x00\x00\x00".unpack("l")         #=>  [255]
"\xff\x00\x00\x00".unpack1("l")        #=>  255

因此 unpack1 很方便,明确了意图并向阅读代码的人发出了预期的返回值。

跳过指定字节数后,可以给出关键字offset开始解码:

"abc".unpack1("C*") # => 97
"abc".unpack1("C*", offset: 2) # => 99
"abc".unpack1("C*", offset: 4) # => offset outside of string (ArgumentError)

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 String.unpack1。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。