作为一枚Android开发人员,有些公用的类,汇总一下公用类,对我们平时的开发会有很大的帮助。这样我们,才能抽出更多的时间,该研究技术的研究技术,有妹子的抱妹子,还没有妹子的,自己想办法。

现在开始整理汇总一些,分享给大家。
今天是分享一个转换的类ConvertUtils.java 目录:

 

bytes2HexString, hexString2Bytes         : byteArr与hexString互转
chars2Bytes, bytes2Chars                 : charArr与byteArr互转
byte2Size, size2Byte                     : 字节数与unit为单位的size互转
byte2FitSize                             : 字节数转合适大小
bytes2Bits, bits2Bytes                   : bytes与bits互转
input2OutputStream, output2InputStream   : inputStream与outputStream互转
inputStream2Bytes, bytes2InputStream     : inputStream与byteArr互转
outputStream2Bytes, bytes2OutputStream   : outputStream与byteArr互转
inputStream2String, string2InputStream   : inputStream与string按编码互转
outputStream2String, string2OutputStream : outputStream与string按编码互转
bitmap2Bytes, bytes2Bitmap               : bitmap与byteArr互转
drawable2Bitmap, bitmap2Drawable         : drawable与bitmap互转
drawable2Bytes, bytes2Drawable           : drawable与byteArr互转
view2Bitmap                              : view转Bitmap
dp2px, px2dp                             : dp与px互转
sp2px, px2sp                             : sp与px互转
import android.annotation.SuppressLint;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.view.View;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;/**
 * <pre>
 *     author: Blankj
 *     blog  : http://blankj.com
 *     time  : 2016/8/13
 *     desc  : 转换相关工具类
 * </pre>
 */public class ConvertUtils {    private ConvertUtils() {        throw new UnsupportedOperationException("u can't instantiate me...");
    }    private static final char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};    /**
     * byteArr转hexString
     * <p>例如:</p>
     * bytes2HexString(new byte[] { 0, (byte) 0xa8 }) returns 00A8
     *
     * @param bytes 字节数组
     * @return 16进制大写字符串
     */
    public static String bytes2HexString(byte[] bytes) {        if (bytes == null) return null;        int len = bytes.length;        if (len <= 0) return null;        char[] ret = new char[len << 1];        for (int i = 0, j = 0; i < len; i++) {
            ret[j++] = hexDigits[bytes[i] >>> 4 & 0x0f];
            ret[j++] = hexDigits[bytes[i] & 0x0f];
        }        return new String(ret);
    }    /**
     * hexString转byteArr
     * <p>例如:</p>
     * hexString2Bytes("00A8") returns { 0, (byte) 0xA8 }
     *
     * @param hexString 十六进制字符串
     * @return 字节数组
     */
    public static byte[] hexString2Bytes(String hexString) {        if (StringUtils.isSpace(hexString)) return null;        int len = hexString.length();        if (len % 2 != 0) {
            hexString = "0" + hexString;
            len = len + 1;
        }        char[] hexBytes = hexString.toUpperCase().toCharArray();        byte[] ret = new byte[len >> 1];        for (int i = 0; i < len; i += 2) {
            ret[i >> 1] = (byte) (hex2Dec(hexBytes[i]) << 4 | hex2Dec(hexBytes[i + 1]));
        }        return ret;
    }    /**
     * hexChar转int
     *
     * @param hexChar hex单个字节
     * @return 0..15
     */
    private static int hex2Dec(char hexChar) {        if (hexChar >= '0' && hexChar <= '9') {            return hexChar - '0';
        } else if (hexChar >= 'A' && hexChar <= 'F') {            return hexChar - 'A' + 10;
        } else {            throw new IllegalArgumentException();
        }
    }    /**
     * charArr转byteArr
     *
     * @param chars 字符数组
     * @return 字节数组
     */
    public static byte[] chars2Bytes(char[] chars) {        if (chars == null || chars.length <= 0) return null;        int len = chars.length;        byte[] bytes = new byte[len];        for (int i = 0; i < len; i++) {
            bytes[i] = (byte) (chars[i]);
        }        return bytes;
    }    /**
     * byteArr转charArr
     *
     * @param bytes 字节数组
     * @return 字符数组
     */
    public static char[] bytes2Chars(byte[] bytes) {        if (bytes == null) return null;        int len = bytes.length;        if (len <= 0) return null;        char[] chars = new char[len];        for (int i = 0; i < len; i++) {
            chars[i] = (char) (bytes[i] & 0xff);
        }        return chars;
    }    /**
     * 以unit为单位的内存大小转字节数
     *
     * @param memorySize 大小
     * @param unit       单位类型
     *                   <ul>
     *                   <li>{@link ConstUtils.MemoryUnit#BYTE}: 字节</li>
     *                   <li>{@link ConstUtils.MemoryUnit#KB}  : 千字节</li>
     *                   <li>{@link ConstUtils.MemoryUnit#MB}  : 兆</li>
     *                   <li>{@link ConstUtils.MemoryUnit#GB}  : GB</li>
     *                   </ul>
     * @return 字节数
     */
    public static long memorySize2Byte(long memorySize, ConstUtils.MemoryUnit unit) {        if (memorySize < 0) return -1;        switch (unit) {            default:            case BYTE:                return memorySize;            case KB:                return memorySize * ConstUtils.KB;            case MB:                return memorySize * ConstUtils.MB;            case GB:                return memorySize * ConstUtils.GB;
        }
    }    /**
     * 字节数转以unit为单位的内存大小
     *
     * @param byteNum 字节数
     * @param unit    单位类型
     *                <ul>
     *                <li>{@link ConstUtils.MemoryUnit#BYTE}: 字节</li>
     *                <li>{@link ConstUtils.MemoryUnit#KB}  : 千字节</li>
     *                <li>{@link ConstUtils.MemoryUnit#MB}  : 兆</li>
     *                <li>{@link ConstUtils.MemoryUnit#GB}  : GB</li>
     *                </ul>
     * @return 以unit为单位的size
     */
    public static double byte2MemorySize(long byteNum, ConstUtils.MemoryUnit unit) {        if (byteNum < 0) return -1;        switch (unit) {            default:            case BYTE:                return (double) byteNum;            case KB:                return (double) byteNum / ConstUtils.KB;            case MB:                return (double) byteNum / ConstUtils.MB;            case GB:                return (double) byteNum / ConstUtils.GB;
        }
    }    /**
     * 字节数转合适内存大小
     * <p>保留3位小数</p>
     *
     * @param byteNum 字节数
     * @return 合适内存大小
     */
    @SuppressLint("DefaultLocale")    public static String byte2FitMemorySize(long byteNum) {        if (byteNum < 0) {            return "shouldn't be less than zero!";
        } else if (byteNum < ConstUtils.KB) {            return String.format("%.3fB", byteNum + 0.0005);
        } else if (byteNum < ConstUtils.MB) {            return String.format("%.3fKB", byteNum / ConstUtils.KB + 0.0005);
        } else if (byteNum < ConstUtils.GB) {            return String.format("%.3fMB", byteNum / ConstUtils.MB + 0.0005);
        } else {            return String.format("%.3fGB", byteNum / ConstUtils.GB + 0.0005);
        }
    }    /**
     * 以unit为单位的时间长度转毫秒时间戳
     *
     * @param timeSpan 毫秒时间戳
     * @param unit     单位类型
     *                 <ul>
     *                 <li>{@link ConstUtils.TimeUnit#MSEC}: 毫秒</li>
     *                 <li>{@link ConstUtils.TimeUnit#SEC }: 秒</li>
     *                 <li>{@link ConstUtils.TimeUnit#MIN }: 分</li>
     *                 <li>{@link ConstUtils.TimeUnit#HOUR}: 小时</li>
     *                 <li>{@link ConstUtils.TimeUnit#DAY }: 天</li>
     *                 </ul>
     * @return 毫秒时间戳
     */
    
}

公众号编辑代码块太折腾,这个类源码过多,只贴了一部分

https://mp.weixin.qq.com/s/UU_1Kwn9-paP6Tp25GEaVA