将十六进制转换为小端

时间:2016-01-15 08:47:49

标签: java android

将文本字段的值从十六进制转换为小端的公式是什么?

输入示例:5A109061

示例输出:1636831322

3 个答案:

答案 0 :(得分:3)

  1. EditText获取String的值。

  2. 使用Integer.parseInt(...)和基数16将字符串值解析为十六进制。

  3. 使用ByteBuffer(更简单)或使用位移(更快)来翻转int的字节顺序。

  4. 例如:

    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
}