java转换ab的值,查看新闻/公告--[整理]Java将AB1234形式的16进制字符串转换为10进制数值,考虑字节序的影响....
发布日期:2021-06-24 10:53:25 浏览次数:3 分类:技术文章

本文共 1054 字,大约阅读时间需要 3 分钟。

16fb339d6f8080fa61b78eb8660af171.png

/**

* 将AB1234形式的16进制字符串转换为10进制数值,考虑字节序的影响.

*

* @param hexStr

*            "AB1234"形式的16进制字符串

* @param byteOrder

*            字节序

* @return 10进制数值

*/

public static long ConvertHexStrToDec(String hexStr, ByteOrder byteOrder) {

// 如果是大端字节序,直接解析返回(Java默认使用大端字节序)

if (byteOrder.equals(ByteOrder.BIG_ENDIAN)) {

return Long.parseLong(hexStr, 16);

}

// 先按大端字节序解析16进制字符串。

Long wrongNumber = Long.parseLong(hexStr, 16);

// 将数值写入ByteBuffer,得到字节流

ByteBuffer buffer = ByteBuffer.allocate(Long.SIZE / Byte.SIZE);

buffer.order(ByteOrder.BIG_ENDIAN);

buffer.putLong(wrongNumber);

byte[] array = buffer.array();

// 得到第一个值不为0的数组下标

int beginIndex = 0;

for (int i = 0; i < array.length; i++) {

if (array[i] != 0) {

beginIndex = i;

break;

}

}

// 剩余字节,反序写入另一个数组中,靠尾端写入

byte[] newArray = new byte[array.length];

int nextPositon = newArray.length - 1;

for (int i = beginIndex; i < array.length; i++) {

newArray[nextPositon] = array[i];

nextPositon--;

}

// 复制回原数组(ByteBuffer直接受影响)

System.arraycopy(newArray, 0, array, 0, newArray.length);

// 按Long型读出。

buffer.rewind();

return buffer.getLong();

}

转载地址:https://blog.csdn.net/weixin_32306771/article/details/115811780 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ui php h5,画出自己的UI组件的详情
下一篇:php如何数组去重复,PHP如何去除数组重复元素?

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月16日 04时27分43秒