??Python作為腳本語言,比shell和其它腳本更加好用,主要是Python提供了豐富的類庫椿疗,現(xiàn)在越來越多的框架都開啟了PyAPI橱鹏,特別是機器學(xué)習(xí)方面膜蠢,可見Python在腳本領(lǐng)域中占的分量有多大。直接上需求:
通過Python解析整形的Base64編碼
??當(dāng)然莉兰,這個案例不僅僅是使用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 包后捶朵,我們重命名包蜘矢,然后復(fù)制到我們的 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
??好了,到這里品腹,我們的案例已完成并淋。。珍昨。