将文本字段的值从十六进制转换为小端的公式是什么?
输入示例:5A109061
示例输出:1636831322
答案 0 :(得分:3)
从EditText
获取String
的值。
使用Integer.parseInt(...)
和基数16
将字符串值解析为十六进制。
使用ByteBuffer
(更简单)或使用位移(更快)来翻转int的字节顺序。
例如:
String hex = "5A109061"; // mEditText.getText().toString()
// Parse hex to int
int value = Integer.parseInt(hex, 16);
// Flip byte order using ByteBuffer
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.order(ByteOrder.BIG_ENDIAN);
buffer.asIntBuffer().put(value);
buffer.order(ByteOrder.LITTLE_ENDIAN);
int flipped = buffer.asIntBuffer().get();
System.out.println("hex: 0x" + hex);
System.out.println("flipped: " + flipped);
输出:
hex: 0x5A109061
flipped: 1636831322
答案 1 :(得分:0)
使用ByteBuffer
ByteBuffer byteBuffer = ByteBuffer.allocate(8)order(ByteOrder.LITTLE_ENDIAN).putLong(5A109061)
byte[] result = byteBuffer.array();
答案 2 :(得分:0)
您还可以将此扩展名用于Kotlin。
示例:
val str = "6a3b7043"
val hex2Float = str.hex2Float
fun String.hex2Float(): Float{
val i = toLong(16)
val data = java.lang.Float.intBitsToFloat(i.toInt()) // Big endian
val buffer = ByteBuffer.allocate(4)
buffer.asFloatBuffer().put(data)
buffer.order(ByteOrder.LITTLE_ENDIAN)
val lData = buffer.asFloatBuffer().get() // Little endian
return lData
}