當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。