??Python作為腳本語言,比shell和其它腳本更加好用,主要是Python提供了豐富的類庫,現(xiàn)在越來越多的框架都開啟了PyAPI,特別是機器學習方面,可見Python在腳本領(lǐng)域中占的分量有多大。直接上需求:
通過Python解析整形的Base64編碼
??當然,這個案例不僅僅是使用Python那么簡單,因為我試了好多Python的類庫就是解析不了項目中編碼過后的整形,因此,這個案例將結(jié)合 Java 去解碼。
一、Java代碼的編寫和打包
1.1 編寫代碼
package com.nfdw;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Base64;
public class Base64ToDecimal {
public static BigDecimal b64ToDecimal(String value, int decimal){
BigDecimal new_value = new BigDecimal(new BigInteger(Base64.getDecoder().decode(value)), decimal);
return new_value;
}
}
1.2 打包
image.png
??打包成 jar 包后,我們重命名包,然后復制到我們的 Python 項目中

image.png
二、編寫 Python 腳本代碼
2.1 編寫代碼
import jpype
import os.path
'''
注意函數(shù)里第一行 jar的路徑
'''
def base64_to_decimal(value, decimal):
jarpath = os.path.join(os.path.abspath('.'), 'libs/base64todecimal.jar') # 注意 jar 包的路徑
try:
jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % jarpath)
except:
pass
base64ToDecimal = jpype.JClass('com.nfdw.Base64ToDecimal')
t = base64ToDecimal()
result = t.b64ToDecimal(value, decimal)
return result
if __name__ == '__main__':
print(base64_to_decimal("AW42AA==", int(2)))
jpype.shutdownJVM()
2.2 運行結(jié)果
image.png
??好了,到這里,我們的案例已完成。。。