private fun hexToInt(value: ByteArray): Int {
return (value[1].toInt() and 0xFF) or (value[0].toInt() and 0xFF shl 8)
}
2.十六进制数组转Long(不固定长度)
fun hexToLong(value: ByteArray): Long {
var result = 0L
for (i in value.lastIndex downTo 0) {
result = result or (value[i].toLong() and 0xFF shl ((value.size - 1 - i) * 8))
}
return result
}
3.十六进制数转二进制字符,并获取指定位bit
private fun getTwoBit(b: Byte, i: Int, j: Int): String {
val binary = Integer.toBinaryString(b.toInt() and 0xff)
val s = "00000000".substring(0, 8 - binary.length) + binary
return s.substring(i, j)
}
4.十六进制字符串转十六进制数组
private fun hexStringToByteArray(hexString: String): ByteArray {
require(hexString.length % 2 == 0) { "Invalid hex string" }
val byteArray = ByteArray(hexString.length / 2)
var i = 0
while (i < hexString.length) {
val str = hexString.substring(i, i + 2)
byteArray[i / 2] = str.toInt(16).toByte()
i += 2
}
return byteArray
}
5.十六进制数组转十六进制字符串(带空格)
private fun bytes2HexString(b: ByteArray): String {
val r = StringBuilder()
for (value in b) {
var hex = Integer.toHexString(value.toInt() and 0xFF)
if (hex.length == 1) {
hex = "0$hex"
}
if (r.length > 1) r.append(" ")
r.append(hex.uppercase(Locale.CHINA))
}
return r.toString()
}