Tag: 打开包装

什么是解压缩? 有人可以帮我理解几封信吗?

我正在读这段代码而且我对于发生了什么感到困惑。 此代码使用Ruby的OpenSSL库。 encrypted_message = cipher.update(address_string) + cipher.final encrypted_message => “G\xCB\xE10prs\x1D\xA7\xD0\xB0\xCEmX\xDC@k\xDD\x8B\x8BB\xE1#!v\xF1\xDC\x19\xDD\xD0\xCA\xC9\x8B?B\xD4\xED\xA1\x83\x10\x1F\b\xF0A\xFEMBs’\xF3\xC7\xBC\x87\x9D_n\\z\xB7\xC1\xA5\xDA\xF4s \x99\\\xFD^\x85\x89s\e” [3] pry(Encoder)> encrypted_message.unpack(‘H*’) => [“47cbe1307072731da7d0b0ce6d58dc406bdd8b8b42e1232176f1dc19ddd0cac98b3f42d4eda183101f08f041fe4d427327f3c7bc879d5f6e5c7ab7c1a5daf47320995cfd5e8589731b”] 似乎H指令是这样的: hex字符串(高半字节优先) 如何将encrypted_message中的转义字符转换为字母和数字? 我认为问题的核心是我不理解这一点。 到底是怎么回事? [‘A’].pack(‘H’) => “\xA0”

如何在ruby中解包大于64位的数字?

假设我有一个长约1000个字节的任意字符串。 (我正在研究加密。)如何将其解压缩到BigNum中? 我知道如何将其打包成8位数字,比方说或32位数字。 s=’I am a grumpy potato’ s.unpack(‘C*’) [73, 32, 97, 109, 32, 97, 32, 103, 114, 117, 109, 112, 121, 32, 112, 111, 116, 97, 116, 111] s.upack(‘L*’) => [1835081801, 1730175264, 1886221682, 1869619321, 1869898100] 或者,是否有一种简单的方法将8位数字组合成一个BigNum? 我可能会解压缩成一个8位数字的数组,然后将数组的每个元素乘以8的后续幂。但这似乎太复杂了,不是正确的方法。 编辑:将BigNum变回字符串的首选方法是什么? 我不是指to_s,我的意思是采用相同的字节模式并将其解释为字符串?