python的from_bytes属性_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类型的字符串

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值