java中字节数组与其他各类型的转换
来源:互联网 发布:js split 空字符串 编辑:程序博客网 时间:2024/05/31 18:46
与上一篇博客类似,这也是在同一个项目中遇到的一些问题,不过该问题是得到的字节数组的转换问题:
1,怎样将一个字符串转换为字节数组:
//模拟的字符串 String a="abcdefghij"; //定义一个字节数组 byte[] arr=new byte[25]; //将字符串转换成对应的字节放入字节数组中(也可以自己一个个放) arr=a.getBytes();
然后调用输出流的write方法直接将字节数组传输出去
2,将数字转换为字节数组:
若只有一位,赋值强转(加上byte)即可,16进制一样。
若要转换成4位:
public static byte[] intToByteArray(int i) { //定义字节数组的长度为4 byte[] result = new byte[4]; //由高位到低位 //右移,分别存入字节数组中 result[0] = (byte)((i >> 24) & 0xFF); result[1] = (byte)((i >> 16) & 0xFF); result[2] = (byte)((i >> 8) & 0xFF); result[3] = (byte)(i & 0xFF); return result; }
3,将字节数组转化为字符串:
String s = "fs123fdsa";//String变量 byte b[] = s.getBytes();//String转换为byte[] String t = new String(b);//bytep[]转换为String
4,字节数组转化为数字:
项目中是先将byte的每个数组(8位)转化成对应的整数,将整数转化为对应的16进制字符串,截取表示整数的部分,通过Integer.parseInt转化为对应的整数(转化为String类型时用了类似的方法)。即全部转化为16进制再处理。
5,返回16进制字符串对应的16进制对应的字节:
这句话有点别扭。比如“638666138e84c05f”是字节对应的16进制数,但显示在屏幕上的是个字符串,并不是16进制,这可以用commons-codec的Hex.encodeHexString直接转换过来。同样,我们要用这个16进制串对应的字节,转这个字符串肯定是不行的,要的是它的16进制对应的字符串,就用到了下面的方法:
public static byte[] toByteArray(String hexString) { hexString = hexString.toLowerCase(); final byte[] byteArray = new byte[hexString.length() / 2]; int k = 0; for (int i = 0; i < byteArray.length; i++) {//因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先 byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff); byte low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff); byteArray[i] = (byte) (high << 4 | low); k += 2; } return byteArray; }
6,字节对应的16进制数转成对应的16进制数的字符串:
不解释了,跟5是逆过程:638666138e84c05f--》“638666138e84c05f”
public static String toHexString(byte[] byteArray) {
if (byteArray == null || byteArray.length < 1)
throw new IllegalArgumentException("this byteArray must not be null or empty");
final StringBuilder hexString = new StringBuilder();
for (int i = 0; i < byteArray.length; i++) {
if ((byteArray[i] & 0xff) < 0x10)//0~F前面不零
hexString.append("0");
hexString.append(Integer.toHexString(0xFF & byteArray[i]));
}
return hexString.toString().toLowerCase();
}
- java中字节数组与其他各类型的转换
- Java中的byte[]数据类型与其他各类数据类型的转换
- 字节数组与其他类型的转化
- java中string与其他类型数据之类的转换
- Java-String与其他数据类型的转换
- java中byte类型与其他数据类型转换
- JSON数据及与其他各类数据转换详解
- C移植到Java中,byte[]与其他数据类型的转换
- MFC中CString类与其他类型的转换
- c++ 中 string与其他类型的转换
- Java下枚举变量与其他数据类型的转换
- C# 泛型与其他类型的相互转换
- CString与其他类型的转换
- 十进制与其他进制的转换
- CString与其他类型的转换
- CString与其他字符类型的转换
- CString与其他类型的转换
- CString 与其他数据类型的转换
- java二维码qrcode生成代码下载,进行加密,解密,相对于最代码xiaoxiaot的更为简便
- GSON学习笔记
- [Nutch]Hadoop单机伪分布式模式的使用(deploy)
- maven仓库--私服(Nexus的配置使用)
- 卡方检验用于特征提取
- java中字节数组与其他各类型的转换
- ceph系统原理 细节 benchmark 不完全说明
- Node.js 文件系统
- shiro授权
- android开发-tabhost实现分页
- 树莓派3无屏幕折腾#附带uart问题解决方案
- Fragment
- hdu_1102 Constructing Roads
- Programming Scala 第6章 demo06