BinTools 十六进制转换

package de.rtner.misc;

public class BinTools {
    public static final String hex = "0123456789ABCDEF";

    public BinTools() {
        super();
    }

    public static String bin2hex(byte[] arg5) {
        String v0;
        if(arg5 == null) {
            v0 = "";
        }
        else {
            StringBuffer v1 = new StringBuffer(arg5.length * 2);
            int v0_1;
            for(v0_1 = 0; v0_1 < arg5.length; ++v0_1) {
                int v2 = (arg5[v0_1] + 256) % 256;
                v1.append("0123456789ABCDEF".charAt(v2 / 16 & 15));
                v1.append("0123456789ABCDEF".charAt(v2 % 16 & 15));
            }

            v0 = v1.toString();
        }

        return v0;
    }

    public static int hex2bin(char arg3) {
        int v0;
        if(arg3 < 48 || arg3 > 57) {
            if(arg3 >= 65 && arg3 <= 70) {
                return arg3 - 55;
            }

            if(arg3 >= 97 && arg3 <= 102) {
                return arg3 - 87;
            }

            goto label_20;
        }
        else {
            v0 = arg3 - 48;
        }

        return v0;
    label_20:
        throw new IllegalArgumentException(new StringBuffer().append("Input string may only contain hex digits, but found \‘")
                .append(arg3).append("\‘").toString());
    }

    public static byte[] hex2bin(String arg5) {
        int v0 = 0;
        if(arg5 == null) {
            arg5 = "";
        }
        else if(arg5.length() % 2 != 0) {
            arg5 = new StringBuffer().append("0").append(arg5).toString();
        }

        byte[] v2 = new byte[arg5.length() / 2];
        int v1 = 0;
        while(v1 < arg5.length()) {
            int v3 = v1 + 1;
            char v4 = arg5.charAt(v1);
            v1 = v3 + 1;
            v2[v0] = ((byte)(BinTools.hex2bin(arg5.charAt(v3)) + BinTools.hex2bin(v4) * 16));
            ++v0;
        }

        return v2;
    }

    public static void main(String[] arg5) {
        int v4 = 256;
        int v0 = 0;
        byte[] v3 = new byte[v4];
        byte v1;
        for(v1 = 0; v0 < v4; v1 = ((byte)(v1 + 1))) {
            v3[v0] = v1;
            ++v0;
        }

        String v0_1 = BinTools.bin2hex(v3);
        if(!v0_1.equals(BinTools.bin2hex(BinTools.hex2bin(v0_1)))) {
            throw new AssertionError("Mismatch");
        }
    }
}
时间: 2024-12-24 18:57:32

BinTools 十六进制转换的相关文章

用Linux/Unix命令把十六进制转换成十进制(转)

那天写个脚本,需要把十六进制的数字转成十进制的打出来,发现不知道要怎么弄,搜一下,原来还是很简单的,比用C语言什么的容易多了,就一些现成的命令就解决了. 先列两种简单的方法: 1) echo 自己就能实现,相当简单.不过,不知道如果要从十进制转换回十六进制能怎么写. ]$ echo $((0xac))    172 2) printf 也可以哦,十六进制和十进制互相转换都没问题 ]$ printf %d 0xac    172    ]$ printf %x 172    ac 然后,稍微麻烦一

C#把文本按照十六进制转换,,,,以及把数字装换成十六进制的字符串

1.后面第二个参数写16 input1 = Convert.ToInt32(textBox_one_reg_0xaddr.Text, 16);//将文本按照十六进制转换 2. byte aa = 0x23; textBox_pwm0_dead_percent.Text = Convert.ToString(aa,16);

C# 十进制和十六进制转换

在C#中,十进制和十六进制转换非常简单,方法如下:十进制转为十六进制: int a = 100; String strA = a.ToString("x8"); 十六进制转为十进制: int b= Int32.Parse("266", System.Globalization.NumberStyles.HexNumber); 也可以使用下述方法: /// <summary> /// 十六进制换算为十进制 /// </summary> ///

Java 二进制与十六进制转换

Java 二进制与十六进制转换 二进制转换十六进制 /** * @description 将二进制转换成16进制 * * @param buf * @return */ public static String parseByte2HexStr(byte buf[]) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < buf.length; i++) { String hex = Integer.toHexString(buf

Java 二进制,八进制,十进制,十六进制转换

/** * Java 二进制,八进制,十进制,十六进制转换 */ public class App { public static void main( String[] args ) { int i = 192; System.out.println("---------------------------------"); System.out.println("十进制转二进制:" + Integer.toBinaryString(i)); System.out

PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明,主要掌握各进制转换的方法,以应用于实际开发 一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo decbin(26); //输出 11010 decbin (PHP 3, PHP

C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方

#include <stdio.h> /* 十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方: 在16进制中:a(A)=10 b(B)=11 c(C)=12 d(D)=13 e(E)=14 f(F)=15 例如:CE=12*16^1+14*16^0=192+14=206 */ unsigned short int right(unsigned short int num, int n){ return (num<<n) | (num>>(sizeof

delphi 十进制十六进制转换

delphi有提供十进制转换成十六进制的函数: IntToStr();   返回值为String // 十进制转十六进制 var i: integer; str: string; begin i := 255; ShowMessage(IntToHex(I, 2)); //FF 2表示返回的位数 // 另外,Formart也有把十进制用十六进制输出的功能 str := Format('%.2x', [i]); ShowMessage(str); // FF 返回结果跟IntToStr()函数想一

Java中十六进制转换 Integer.toHexString()

为了显示一个byte型的单字节十六进制(两位十六进制表示)的编码,请使用: Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).substring(6) byteVar & 0x000000FF的作用是,如果byteVar 是负数,则会清除前面24个零,正的byte整型不受影响. (...) | 0xFFFFFF00的作用是,如果byteVar 是正数,则置前24位为一,这样toHexString输出一个小于等于15的byte整