Java 将十六进制转换为小尾数

Java 将十六进制转换为小尾数,java,android,Java,Android,将文本字段的值从十六进制转换为小尾数的公式是什么 输入示例:5A109061 输出示例:1636831322使用ByteBuffer ByteBuffer byteBuffer = ByteBuffer.allocate(8)order(ByteOrder.LITTLE_ENDIAN).putLong(5A109061) byte[] result = byteBuffer.array(); 从EditText中获取值作为字符串 使用Integer.parseInt(…)和基数16将字符串值

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

输入示例:5A109061


输出示例:1636831322

使用
ByteBuffer

ByteBuffer byteBuffer = ByteBuffer.allocate(8)order(ByteOrder.LITTLE_ENDIAN).putLong(5A109061)

byte[] result = byteBuffer.array();
  • EditText
    中获取值作为
    字符串

  • 使用
    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
    

    您也可以将此扩展用于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
    }