zoukankan      html  css  js  c++  java
  • 常用类型转换

    package com.opslab.util;

    import java.io.ByteArrayOutputStream;

    /**
    * 常用类型转换
    */
    public final class ConvertUtil {

    private final static String hexStr = "0123456789ABCDEF";

    /**
    * 短整型与字节的转换
    */
    public final static byte[] shortToByte(short number) {
    int temp = number;
    byte[] b = new byte[2];
    for (int i = 0; i < b.length; i++) {
    // 将最低位保存在最低位
    b[i] = new Integer(temp & 0xff).byteValue();
    // 向右移8位
    temp = temp >> 8;
    }
    return b;
    }

    /**
    * 字节的转换与短整型
    */
    public final static short byteToShort(byte[] b) {
    short s;
    // 最低位
    short s0 = (short) (b[0] & 0xff);
    short s1 = (short) (b[1] & 0xff);
    s1 <<= 8;
    s = (short) (s0 | s1);
    return s;
    }

    /**
    * 整型与字节数组的转换
    */
    public final static byte[] intToByte(int i) {
    byte[] bt = new byte[4];
    bt[0] = (byte) (0xff & i);
    bt[1] = (byte) ((0xff00 & i) >> 8);
    bt[2] = (byte) ((0xff0000 & i) >> 16);
    bt[3] = (byte) ((0xff000000 & i) >> 24);
    return bt;
    }

    /**
    * 整型数组转换为字节数组的转换
    *
    * @param arr 整型数组
    */
    public final static byte[] intToByte(int[] arr) {
    byte[] bt = new byte[arr.length * 4];
    for (int i = 0; i < arr.length; i++) {
    byte[] t = intToByte(arr[i]);
    System.arraycopy(t, 0, bt, i + 4, 4);
    }
    return bt;
    }

    public final static byte[] encodeBytes(byte[] source, char split) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream(source.length);
    for (byte b : source) {
    if (b < 0) {
    b += 256;
    }
    bos.write(split);
    char hex1 = Character.toUpperCase(Character.forDigit((b >> 4) & 0xF, 16));
    char hex2 = Character.toUpperCase(Character.forDigit(b & 0xF, 16));
    bos.write(hex1);
    bos.write(hex2);
    }
    return bos.toByteArray();
    }

    /**
    * bytes数组转char数组
    * bytes to chars
    *
    * @param bytes bytes数组
    */
    public final static char[] bytesToChars(byte[] bytes) {
    char[] chars = new char[]{};
    if (CheckUtil.valid(bytes)) {
    chars = new char[bytes.length];
    for (int i = 0; i < bytes.length; i++) {
    chars[i] = (char) bytes[i];
    }
    }
    return chars;
    }

    /**
    * 字节数组和整型的转换
    */
    public final static int bytesToInt(byte[] bytes) {
    int num = bytes[0] & 0xFF;
    num |= ((bytes[1] << 8) & 0xFF00);
    num |= ((bytes[2] << 16) & 0xFF0000);
    num |= ((bytes[3] << 24) & 0xFF000000);
    return num;
    }

    /**
    * 字节数组和长整型的转换
    */
    public final static byte[] longToByte(long number) {
    long temp = number;
    byte[] b = new byte[8];
    for (int i = 0; i < b.length; i++) {
    b[i] = new Long(temp & 0xff).byteValue();
    // 将最低位保存在最低位
    temp = temp >> 8;
    // 向右移8位
    }
    return b;
    }

    /**
    * 字节数组和长整型的转换
    */
    public final static long byteToLong(byte[] b) {
    long s;
    long s0 = b[0] & 0xff;// 最低位
    long s1 = b[1] & 0xff;
    long s2 = b[2] & 0xff;
    long s3 = b[3] & 0xff;
    long s4 = b[4] & 0xff;// 最低位
    long s5 = b[5] & 0xff;
    long s6 = b[6] & 0xff;
    long s7 = b[7] & 0xff; // s0不变
    s1 <<= 8;
    s2 <<= 16;
    s3 <<= 24;
    s4 <<= 8 * 4;
    s5 <<= 8 * 5;
    s6 <<= 8 * 6;
    s7 <<= 8 * 7;
    s = s0 | s1 | s2 | s3 | s4 | s5 | s6 | s7;
    return s;
    }

    /**
    * 将byte转换为对应的二进制字符串
    *
    * @param src 要转换成二进制字符串的byte值
    */
    public final static String byteToBinary(byte src) {
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < 8; i++) {
    result.append(src % 2 == 0 ? '0' : '1');
    src = (byte) (src >>> 1);
    }
    return result.reverse().toString();
    }

    /**
    * 将十六进制字符串转为二进制字符串
    *
    * @param hexStr 十六进制字符串
    */
    public final static String hexStringtoBinarg(String hexStr) {
    hexStr = hexStr.replaceAll("\s", "").replaceAll("0x", "");
    char[] achar = hexStr.toCharArray();
    String result = "";
    for (char a : achar) {
    result += Integer.toBinaryString(
    Integer.valueOf(String.valueOf(a), 16)) + " ";
    }
    return result;
    }

    /**
    * 将二进制转换为十六进制字符输出
    *
    * @param bytes bytes数组
    */
    public final static String bytesToHexString(byte[] bytes) {
    String result = "";
    String hex;
    for (byte b : bytes) {
    //字节高4位
    hex = String.valueOf(hexStr.charAt((b & 0xF0) >> 4));
    //字节低4位
    hex += String.valueOf(hexStr.charAt(b & 0x0F));
    result += hex + " ";
    }
    return result;
    }

    /**
    * 把16进制字符串转换成字节数组
    *
    * @param hexString 16进制字符串
    * @return byte[]
    */
    public final static byte[] hexStringToByte(String hexString) {
    int len = (hexString.length() / 2);
    byte[] result = new byte[len];
    char[] achar = hexString.toCharArray();
    for (int i = 0; i < len; i++) {
    int pos = i * 2;
    result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
    }
    return result;
    }

    private final static int toByte(char c) {
    return (byte) hexStr.indexOf(c);
    }
    }

  • 相关阅读:
    定义通用类型,便于移植和32位、64位的编译
    映射密码的加密,解密以及暴力破解
    位移密码的加密,解密以及暴力破解
    TCP三次握手和四次挥手通俗理解
    git常用命令
    pip及npm换源
    win10安装Docker并换国内源
    搜索引擎工作原理
    wsgi_uwsgi_nginx理论知识
    课程全文检索接口
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254818.html
Copyright © 2011-2022 走看看