java实现python中的int.from_bytes()函数

Python函数是以下的,python中可以指定字节的排列顺序,比如 'little',java中默认是大字节序,通过使用ArrayUtils来反转字节数组来达到使用小字节序的目的,字节数组转long的过程中会转化成有符号的long类型,解决办法是使用BigInteger类来实现unsigned,具体代码如下:

要用java方式实现的python的代码

import hashlib

md5 = hashlib.md5("this is str".encode("utf-8"))

low = int.from_bytes(md5.digest()[0:8],'little')

java代码实现

//导入需要的包

import java.util.Arrays;

import org.apache.commons.lang.ArrayUtils;

import java.math.BigInteger;


public static String byteArrayToLong(byte[] array) {

byte[] lowArray = Arrays.copyOfRange(array,0,8);

byte[] highArray = Arrays.copyOfRange(array,8,16);  //分别拷贝字节数组的前八位和后八位

ArrayUtils.reverse(lowArray);//java中默认的字节排列顺序为big_endian,用工具类将字节数组翻转改成little_endian

ArrayUtils.reverse(highArray);

BigInteger lowBigInt =new BigInteger(1,lowArray);

BigInteger highBigInt =new BigInteger(1,highArray);

return lowBigInt.toString();//返回的就是无符号的long类型的字符串

}

你可能感兴趣的:(java实现python中的int.from_bytes()函数)