ruby – 为什么hex – > base64与base64 – > hex使用pack
我得到了这段代码,它从hex转换为base64,反之亦然.我从另一个SO问题得到了to_base64,并且我用一些猜测和反复试验写了to_hex.
class String def to_base64 [[self].pack("H*")].pack("m0") end def to_hex self.unpack("m0").first.unpack("H*").first end end 但即使在阅读完文档后,我也没有真正理解包装和解压方法.具体来说,我对这两种实现之间的不对称感到困惑.从概念上讲,在这两种情况下,我们采用在某个基数(16或64)中编码的字符串,并且我们希望将其转换为另一个基数.那么为什么我们不能像这样实现to_hex: def to_hex [[self].pack("m0")].pack("H*") end 或者to_base64使用unpack?为什么我们选择的基础完全改变了我们需要用来完成转换的方法? 解决方法
to_hex与to_base64完全相反:
to_base64 >把字符串放在一个数组中:[self] to_hex >使用m0调用unpack:self.unpack(“m0”) 这就是你通过应用逆操作来撤消操作的方法: a = 5 (a + 4) * 3 #=> 27 反过来说: a = 27 (a / 3) - 4 #=> 5 a.pack是a.unpack的反转,a.first是[a]的反转 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在swift中创建JSON
- 中文json字符串转对象情况下,含特殊字符“-”等处理
- c和LD_PRELOAD.打开和open64调用被截获,但不是stat64
- 使用C中的QProcess重定向gnome-terminal的输出
- React Native-6.React Native Text组件,多组件封装实战之
- nagios监控插件 nagios_oracle_health+check_linux_stats.p
- react搭建后台管理(react初窥)
- 详解C语言中strcpy()函数与strncpy()函数的使用
- cocos2dx + android 如何添加百度插屏广告
- c# – 如何:从链接按钮中删除__doPostBack?