当前位置:  开发笔记 > 后端 > 正文

string.unpack如何在Ruby中工作?

如何解决《string.unpack如何在Ruby中工作?》经验,为你挑选了2个好方法。

有人可以解释为什么如何计算以下解压缩的结果?

"aaa".unpack('h2H2')               #=> ["16", "61"]

在二进制中,'a'= 0110 0001.我不确定'h2'如何变为16(0001 0000)或'H2'变为61(0011 1101).



1> Brian..:

不是16 - 它显示1然后是6. h给出每个半字节的十六进制值,所以你得到0110(6),然后是0001(1),这取决于你看到的是高位还是低位.首先使用高半字节然后得到61,这是97的十六进制 - 'a'的值



2> Chris Bunch..:

在unpack上查看Programming Ruby 参考.这是一个片段:

根据格式字符串解码str(可能包含二进制数据),返回提取的每个值的数组.格式字符串由一系列单字符指令组成,在表29.8(第379页)中进行了总结.每个指令后面都可以跟一个数字,表示使用此指令重复的次数.星号("*")将耗尽所有剩余元素.指令sSiIlL可以后面跟一个下划线("_"),以使用底层平台的指定类型的本机大小; 否则,它使用与平台无关的一致大小.格式字符串中将忽略空格.另请参见Array#pack(第286页).

以及您示例中的相关字符:

H从每个字符中提取十六进制半字节(最重要的是第一个).

h从每个字符中提取十六进制半字节(最不重要的第一个).

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有