从文档中unpack执行:
根据格式字符串对str(可能包含二进制数据)进行解码,并返回每个提取值的数组。
和"C"格式手段8-bit unsigned (unsigned char)。
但是,这实际上对我输入的字符串做了什么呢?结果是什么意思,如果我必须手动操作,我将如何去做呢?
它将每个后续char转换为整数序数String#ord。那就是
string.unpack 'C*'
Run Code Online (Sandbox Code Playgroud)
完全等于
string.each_char.map(&:ord)
Run Code Online (Sandbox Code Playgroud)
但这实际上最终对我输入的字符串做了什么
它对输入没有任何作用。而且这里的输入并不是真正的字符串。它的类型为字符串,但它实际上是二进制数据的缓冲区,例如您可能通过网络接收到的数据,您的目标是将这些数据提取到整数数组中。例子:
s = "\01\00\02\03"
arr = s.unpack("C*")
p(arr) # [1,0,2,3]
Run Code Online (Sandbox Code Playgroud)
该“字符串”作为文本字符串毫无意义,但作为数据缓冲区却非常可行。打开它可以让您检查数据。