java十六进制字符串 转化为整形

import java.io.File;

public class AndroidLayoutReflat {

    public static void main(String[] args) {

        try {
            int m = OxStringtoInt("7F06000A");
            System.out.println(m + "," + 0x7F06000A);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static int OxStringtoInt(String ox) throws Exception {
        ox=ox.toLowerCase();
        if(ox.startsWith("0x")){
            ox=ox.substring(2, ox.length() );
        }
        int ri = 0;
        int oxlen = ox.length();
        if (oxlen > 8)
            throw (new Exception("too lang"));
        for (int i = 0; i < oxlen; i++) {
            char c = ox.charAt(i);
            int h;
            if (('0' <= c && c <= '9')) {
                h = c - 48;
            } else if (('a' <= c && c <= 'f'))
            {
                h = c - 87;

            }
            else if ('A' <= c && c <= 'F') {
                h = c - 55;
            } else {
                throw (new Exception("not a integer "));
            }
            byte left = (byte) ((oxlen - i - 1) * 4);
            ri |= (h << left);
        }
        return ri;

    }

}





### Java 中实现十六进制数高低位互换 在 Java 中可以采用多种方法来实现十六进制数值的高低位互换操作。下面介绍一种基于字符串处理的方式以及另一种通过按位运算完成该功能的方法。 #### 字符串处理方式 当输入的是表示十六进制整数的字符串形式时,可以通过反字符串达到目的。不过需要注意的是,在实际应用前应当去除掉可能存在的`0x`前缀并确保长度为偶数以便每位十六进制数字都能找到对应的字节位置: ```java public class HexSwap { public static String swapHexByString(String hexStr){ StringBuilder sb = new StringBuilder(); int length = hexStr.length(); // 如果有'0x'去掉它,并调整length if (hexStr.startsWith("0x") || hexStr.startsWith("0X")) { hexStr = hexStr.substring(2); length -= 2; } // 补齐到偶数个字符 if(length % 2 != 0){ hexStr = "0"+hexStr; length++; } for(int i=0;i<length/2;i++){ sb.append(hexStr.charAt(length-(i*2)-1)); sb.append(hexStr.charAt(length-(i*2)-2)); } return sb.toString().toUpperCase(); } } ``` 这种方法简单直观但是效率较低,适用于学习理解概念[^1]。 #### 使用按位运算 对于更高效的解决方案,则可以直接利用二进制位的操作来进行高低位交换。这里给出一个针对32位无符号整型的例子,假设给定的数据是以大端模式存储(即高位存放在低地址处),那么就可以按照如下方式进行换: ```java public class BitwiseSwap { /** * 对于传入的一个int类型的值执行高低位翻. */ public static long reverseBits(long value) { final int BYTE_SIZE = 8; long result = 0L; while(value!=0){ result <<= BYTE_SIZE; result |= ((value & 0xFF)); value >>>= BYTE_SIZE; } return result; } /** * 将long类型的结果转化为16进制字符串输出. */ public static String convertToHexString(long num){ return Long.toHexString(num).toUpperCase(); } public static void main(String[] args) { long originalValue = Integer.parseUnsignedInt("FEDCBA98", 16); // 原始数据 System.out.println("Original Value: "+convertToHexString(originalValue)); long reversedValue = reverseBits(originalValue); System.out.println("Reversed Value : "+convertToHexString(reversedValue)); } } ``` 这段代码展示了如何使用移位和逻辑或运算符(`|`)逐字节地构建新的高地位颠倒后的数值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值