android 数据类型转换大全

import android.text.TextUtils;
import android.util.Log;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Created by snake on 2016/10/11.
 */

public class UtilsDataConversion {


    private static final String TAG = "UtilsDataConversion";

    //
    /**
     * 字节到字符转换
     *
     * @param b
     * @return
     */
    public static char getChar(byte[] b, int index) {
        int s = 0;
        if (b[index + 1] > 0)
            s += b[index + 1];
        else
            s += 256 + b[index + 0];
        s *= 256;
        if (b[index + 0] > 0)
            s += b[index + 1];
        else
            s += 256 + b[index + 0];
        char ch = (char) s;
        return ch;
    }

    /**
     * 将一个2个字节数组转换为intt。
     *
     * @param b
     * @return
     */
    public static int bytesTwo2Int(byte[] b) {
        int a1 = b[0] & 0xff;
        int a2 = (b[1] & 0xff) * 256;
        return (a1 + a2);
    }

    /**
     * 将一个4个字节数组转换为int。
     *
     * @param b
     * @return
     */
    public static int bytesFour2Int(byte[] b) {
        int a1 = b[0] & 0xff;
        int a2 = (b[1] & 0xff) * 256;
        int a3 = (b[2] & 0xff) * 65536;
        int a4 = (b[3] & 0xff) * 16777216;
        return (a1 + a2 + a3 + a4);
    }

    public static String ten2sixteen(long ten) {
        return Long.toHexString(ten);
    }

    public static byte[] long2Bytes(long num) {
        byte[] byteNum = new byte[8];
        for (int ix = 0; ix < 8; ++ix) {
            int offset = 64 - (ix + 1) * 8;
            byteNum[ix] = (byte) ((num >> offset) & 0xff);
        }
        return byteNum;
    }

    public static byte[] int2Bytes(int num) {
        byte[] byteNum = new byte[4];
        for (int ix = 0; ix < 4; ++ix) {
            int offset = 32 - (ix + 1) * 8;
            byteNum[ix] = (byte) ((num >> offset) & 0xff);
        }

        byte[] byte_result = new byte[] { byteNum[3], byteNum[2] };
        return byte_result;
    }

    /**
     * Convert hex string to byte[]
     *
     * @param hexString
     *            the hex string
     * @return byte[]
     */
    public static byte[] hexStringToBytes(String hexString) {
        if (hexString == null || hexString.equals("")) {
            return null;
        }
        hexString = hexString.toUpperCase();
        int length = hexString.length() / 2;
        char[] hexChars = hexString.toCharArray();
        byte[] d = new byte[length];
        for (int i = 0; i < length; i++) {
            int pos = i * 2;
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
        }
        return d;
    }

    /**
     * Convert char to byte
     *
     * @param c
     *            char
     * @return byte
     */
    private static byte charToByte(char c) {
        return (byte) "0123456789ABCDEF".indexOf(c);
    }

    /**
     * ascii to string
     *
     * @param value
     * @return
     */
    public static String asciiToString(String value) {
        StringBuffer sbu = new StringBuffer();
        String[] chars = value.split(",");
        for (int i = 0; i < chars.length; i++) {
            sbu.append((char) Integer.parseInt(chars[i]));
        }
        return sbu.toString();
    }

    /**
     * string to ascii
     *
     * @param value
     * @return
     */
    public static String stringToAscii(String value) {
        StringBuffer sbu = new StringBuffer();
        char[] chars = value.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (i != chars.length - 1) {
                sbu.append((int) chars[i]).append(",");
            } else {
                sbu.append((int) chars[i]);
            }
        }
        return sbu.toString();
    }

    @SuppressWarnings({ "resource" })
    public static byte[] getByte(File file) {

        byte[] bytes = null;
        if (file != null) {
            try {
                InputStream is = new FileInputStream(file);
                int length = (int) file.length();
                Log.d(TAG, "the file length is= " + length);
                if (length > Integer.MAX_VALUE) {
                    System.out.println("this file is max");
                    return null;
                }
                bytes = new byte[length];
                int offset = 0;
                int numRead = 0;
                while (offset == 0) {
                    offset += numRead;
                }
                if (offset != length) {
                    System.out.println("file length is error");
                    return null;
                }
                is.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return bytes;
    }

    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }

    /**
     * 十六进制转换字符串
     *
     * @param  hexStr str Byte字符串(Byte之间无分隔符 如:[616C6B])
     * @return String 对应的字符串
     */
    public static String hexStr2Str(String hexStr) {
        String str = "0123456789ABCDEF";
        char[] hexs = hexStr.toCharArray();
        byte[] bytes = new byte[hexStr.length() / 2];
        int n;

        for (int i = 0; i < bytes.length; i++) {
            n = str.indexOf(hexs[2 * i]) * 16;
            n += str.indexOf(hexs[2 * i + 1]);
            bytes[i] = (byte) (n & 0xff);
        }
        return new String(bytes);
    }


    /**
     * 十六进制转二进制
     * @修改者
     * @param a
     * @return
     */
    public static String HToB(String a) {
        String b = Integer.toBinaryString(Integer.valueOf(toD(a, 16)));
        return b;
    }

    /**
     * 二进制转十六进制
     * @修改者
     * @param a
     * @return
     */
    public static String BToH(String a) {
      /* 将二进制转为十进制再从十进制转为十六进制*/
        String b = Integer.toHexString(Integer.valueOf(toD(a, 2)));
        return b;
    }


    /**
     * 任意进制数转为十进制数
     * @修改者
     * @param a
     * @param b
     * @return
     */
    public static String toD(String a, int b) {
        int r = 0;
        for (int i = 0; i < a.length(); i++) {
            r = (int) (r + formatting(a.substring(i, i + 1))
                    * Math.pow(b, a.length() - i - 1));
        }
        return String.valueOf(r);
    }

    /**
     * 将十六进制中的字母转为对应的数字
     * @修改者
     * @param a
     * @return
     */
    public static int formatting(String a) {
        int i = 0;
        for (int u = 0; u < 10; u++) {
            if (a.equals(String.valueOf(u))) {
                i = u;
            }
        }
        if (a.equals("a")) {
            i = 10;
        }
        if (a.equals("b")) {
            i = 11;
        }
        if (a.equals("c")) {
            i = 12;
        }
        if (a.equals("d")) {
            i = 13;
        }
        if (a.equals("e")) {
            i = 14;
        }
        if (a.equals("f")) {
            i = 15;
        }
        return i;
    }


    /**
     * 将十进制中的数字转为十六进制对应的字母
     * @修改者
     * @param a
     * @return
     */
    public static String formattingH(int a) {
        String i = String.valueOf(a);
        switch (a) {
            case 10:
                i = "a";
                break;
            case 11:
                i = "b";
                break;
            case 12:
                i = "c";
                break;
            case 13:
                i = "d";
                break;
            case 14:
                i = "e";
                break;
            case 15:
                i = "f";
                break;
        }
        return i;
    }

    /**
     * 添加字符串长度到purLen长度,添加内容为0;
     * @修改者
     * @param str
     * @param purLen
     * @return
     */
    public static String appendStrLen(String str, int purLen){
        if(TextUtils.isEmpty(str) || str.length() >= purLen){
            return str;
        }
        StringBuffer sb = new StringBuffer();

        int subLen = purLen - str.length();
        for (int i = 0; i < subLen; i++) {
            sb.append("0");
        }
        sb.append(str);
        return sb.toString();
    }

}
上述是我整理出来的一些数据转换, 各位读者如有补充的 请给我留言,我会及时跟新补充,在此统一感谢。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值