pybitcointools源码分析之进制转换
来源:互联网 发布:怎样迫使淘宝店铺停业 编辑:程序博客网 时间:2024/05/21 06:39
这部分是一些基本的操作函数。
data = [ [10, '65535', 16, 'ffff'], [16, 'deadbeef', 10, '3735928559'] ] #测试 for prebase, preval, postbase, postval in data: self.assertEqual(changebase(preval, prebase, postbase), postval)
changebase的功能简单易懂,
prebase进制的preval,经过changebase转换成postbase进制后,结果等于postval。
进入函数里面看看,
def changebase(string, frm, to, minlen=0): if frm == to: return lpad(string, get_code_string(frm)[0], minlen) return encode(decode(string, frm), to, minlen)
decode函数是把字符串形式表示的数字转换成整型,比如这个例子中的’65535’转换成整数65535。
实现原理也比较好理解,
def decode(string, base): base = int(base) code_string = get_code_string(base) result = 0 if base == 16: string = string.lower() while len(string) > 0: result *= base result += code_string.find(string[0]) string = string[1:] return result
encode函数执行实际的转换工作,
def encode(val, base, minlen=0): base, minlen = int(base), int(minlen) code_string = get_code_string(base) result = "" while val > 0: result = code_string[val % base] + result val //= base return code_string[0] * max(minlen - len(result), 0) + result
encode通过mod操作进行进制转换。最后一行是进行补位的,通过左补0把结果补到minlen指定的长度。
阅读全文
0 0
- pybitcointools源码分析之进制转换
- pybitcointools源码分析之RFC6979
- pybitcointools源码分析之BIP32实现
- pybitcointools源码分析之由私钥获取公钥
- pybitcointools源码分析之比特币交易数据结构
- Java进制转换(源码分析)
- 从JDK源码分析Java进制转换
- Spark源码分析之job提交后转换为Stage
- Linux网络地址转换源码分析
- duilib之源码分析
- duilib之源码分析
- 源码分析之Adapter
- 源码分析之ArrayList
- 源码分析之LinkedList
- 源码分析之BitSet
- 源码分析之PriorityQueue
- Duilib之源码分析
- DUI之源码分析
- logback 常用配置详解(二) <appender>
- 欢迎使用CSDN-markdown编辑器
- Oracle 常用SQL记录
- unity3d发布webgl手机测试流程
- Snackbar的使用
- pybitcointools源码分析之进制转换
- 2017-8-28 valentine's day mysql 入门
- Linux磁盘管理命令笔记
- Spring boot 在Intellij IDEA 中的热部署
- [LWIP学习]--socket函数分析
- 《战狼捕鱼》隐私政策
- shell的简单批量curl接口脚本
- MySQL学习续篇--01
- java中的异常处理