gpt4 book ai didi

ruby 包和十六进制值

转载 作者:数据小太阳 更新时间:2023-10-29 07:24:56 39 4
gpt4 key购买 nike

一个半字节是四位。这意味着有 16 (2^4) 个可能的值。这意味着一个半字节对应一个十六进制数字,因为十六进制是以 16 为底的。一个字节是 2^8,因此可以用 2 个十六进制数字表示,因此是 2 个半字节。

所以在下面我有一个 1 字节的字符:

'A'

那个字符是 2^8:

 'A'.unpack('B*')
=> ["01000001"]

这意味着它应该由两个十六进制数字表示:

 01000001 == 41

根据Ruby文档,对于Array方法包,当aTemplateString(参数)等于'H'时,返回一个十六进制字符串。但这就是我得到的:

['A'].pack('H')
=> "\xA0"

我的第一点是,这不是它应该返回的十六进制值。它应该返回 41 的十六进制值。第二点是半字节的概念,正如我上面解释的那样,意味着对于 1 个字节,它应该返回两个半字节。但在它上面插入了一个 0,因为它认为输入只有 1 个半字节,即使 'A' 是一个字节并且有两个半字节。很明显我在这里遗漏了一些东西。

最佳答案

我想你想要unpack :

'A'.unpack('H*') #=> ["41"]

pack做相反的事情:

['41'].pack('H*') #=> "A"

关于 ruby 包和十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17222549/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com