博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java类型转换实例 分类: Java 201...
阅读量:6943 次
发布时间:2019-06-27

本文共 9235 字,大约阅读时间需要 30 分钟。

例:将字符串内容转为浮点数,再还原出原字符串内容
import java.io.UnsupportedEncodingException;import java.nio.ByteBuffer;import java.nio.DoubleBuffer;import java.nio.FloatBuffer;public class test3 {	public static void main(String[] args) {		new test3();	}	/**	 * 第一种方法	 */	/**	 * 1,整数到字节数组的转换	 * 	 * @param number	 * @return	 */	public static byte[] intToByte(int number) {		int temp = number;		byte[] b = new byte[4];		for (int i = b.length - 1; i > -1; i--) {			b[i] = new Integer(temp & 0xff).byteValue(); // 将最高位保存在最低位			temp = temp >> 8; // 向右移8位		}		return b;	}	/**	 * 2,字节数组到整数的转换	 * 	 * @param b	 * @return	 */	public static int byteToInt(byte[] b) {		int s = 0;		for (int i = 0; i < 3; i++) {			if (b[i] >= 0)				s = s + b[i];			else				s = s + 256 + b[i];			s = s * 256;		}		if (b[3] >= 0) // 最后一个之所以不乘,是因为可能会溢出			s = s + b[3];		else			s = s + 256 + b[3];		return s;	}	/**	 * 3,字符到字节转换	 * 	 * @param ch	 * @return	 */	public static byte[] charToByte(char ch) {		int temp = (int) ch;		byte[] b = new byte[2];		for (int i = b.length - 1; i > -1; i--) {			b[i] = new Integer(temp & 0xff).byteValue(); // 将最高位保存在最低位			temp = temp >> 8; // 向右移8位		}		return b;	}	/**	 * 4,字节到字符转换	 * 	 * @param b	 * @return	 */	public static char byteToChar(byte[] b) {		int s = 0;		if (b[0] > 0)			s += b[0];		else			s += 256 + b[0];		s *= 256;		if (b[1] > 0)			s += b[1];		else			s += 256 + b[1];		char ch = (char) s;		return ch;	}	/**	 * 5,双精度浮点到字节转换	 * 	 * @param d	 * @return	 */	public static byte[] doubleToByte(double d) {		byte[] b = new byte[8];		long l = Double.doubleToLongBits(d);		for (int i = 0; i < b.length; i++) {			b[i] = new Long(l).byteValue();			l = l >> 8;		}		return b;	}	/**	 * 6,字节到双精度浮点转换	 * 	 * @param b	 * @return	 */	public static double byteToDouble(byte[] b) {		long l;		l = b[0];		l &= 0xff;		l |= ((long) b[1] << 8);		l &= 0xffff;		l |= ((long) b[2] << 16);		l &= 0xffffff;		l |= ((long) b[3] << 24);		l &= 0xffffffffl;		l |= ((long) b[4] << 32);		l &= 0xffffffffffl;		l |= ((long) b[5] << 40);		l &= 0xffffffffffffl;		l |= ((long) b[6] << 48);		l |= ((long) b[7] << 56);		return Double.longBitsToDouble(l);	}	/**	 * 7,单精度浮点转换为字节	 * 	 * @param f	 * @return	 */	public static byte[] float2byte(float f) {		// 把float转换为byte[]		int fbit = Float.floatToIntBits(f);		byte[] b = new byte[4];		for (int i = 0; i < 4; i++) {			b[i] = (byte) (fbit >> (24 - i * 8));		}		// 翻转数组		int len = b.length;		// 建立一个与源数组元素类型相同的数组		byte[] dest = new byte[len];		// 为了防止修改源数组,将源数组拷贝一份副本		System.arraycopy(b, 0, dest, 0, len);		byte temp;		// 将顺位第i个与倒数第i个交换		for (int i = 0; i < len / 2; ++i) {			temp = dest[i];			dest[i] = dest[len - i - 1];			dest[len - i - 1] = temp;		}		return dest;	}	/**	 * ,8,字节转换为单精度浮点	 * 	 * @param b	 *            字节(至少4个字节)	 * @param index	 *            开始位置	 * @return	 */	public static float byte2float(byte[] b, int index) {		int l;		l = b[index + 0];		l &= 0xff;		l |= ((long) b[index + 1] << 8);		l &= 0xffff;		l |= ((long) b[index + 2] << 16);		l &= 0xffffff;		l |= ((long) b[index + 3] << 24);		return Float.intBitsToFloat(l);	}	/**	 * 将Byte转换为String 或者将String转换为Byte	 * 	 * @author Administrator	 * 	 */	/**	 * 默认的字符集编码 UTF-8 一个汉字占三个字节	 */	private static String CHAR_ENCODE = "UTF-8";	/**	 * 设置全局的字符编码	 * 	 * @param charEncode	 */	public static void configCharEncode(String charEncode) {		CHAR_ENCODE = charEncode;	}	/**	 * @param str	 *            源字符串转换成字节数组的字符串	 * @return	 */	public static byte[] StringToByte(String str) {		return StringToByte(str, CHAR_ENCODE);	}	/**	 * 	 * @param srcObj	 *            源字节数组转换成String的字节数组	 * @return	 */	public static String ByteToString(byte[] srcObj) {		return ByteToString(srcObj, CHAR_ENCODE);	}	/**	 * UTF-8 一个汉字占三个字节	 * 	 * @param str	 *            源字符串 转换成字节数组的字符串	 * @return	 */	public static byte[] StringToByte(String str, String charEncode) {		byte[] destObj = null;		try {			if (null == str || str.trim().equals("")) {				destObj = new byte[0];				return destObj;			} else {				destObj = str.getBytes(charEncode);			}		} catch (UnsupportedEncodingException e) {			e.printStackTrace();		}		return destObj;	}	/**	 * @param srcObj	 *            源字节数组转换成String的字节数组	 * @return	 */	public static String ByteToString(byte[] srcObj, String charEncode) {		String destObj = null;		try {			destObj = new String(srcObj, charEncode);		} catch (UnsupportedEncodingException e) {			e.printStackTrace();		}		return destObj.replaceAll("\0", " ");	}	/**	 * Convert byte[] to hex string	 * 	 * @param src	 * @return	 */	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();	}	/**	 * Convert hex string to byte[]	 * 	 * @param hexString	 * @return	 */	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) (charToBytes(hexChars[pos]) << 4 | charToBytes(hexChars[pos + 1]));		}		return d;	}	/**	 * Convert char to byte	 * 	 * @param c	 * @return	 */	private static byte charToBytes(char c) {		return (byte) "0123456789ABCDEF".indexOf(c);	}	/**	 * 第二种方法	 */	/**	 * 1,BYTE转INT	 * 	 * @param b	 * @return	 */	protected int byteArrayToInt(byte[] b) {		return (b[0] << 24) + ((b[1] & 0xFF) << 16) + ((b[2] & 0xFF) << 8)				+ (b[3] & 0xFF);	}	/**	 * ,2,BYTE转SHORT	 * 	 * @param b	 * @return	 */	protected int byteArrayToShort(byte[] b) {		return (b[0] << 8) + (b[1] & 0xFF);	}	/**	 * ,3,SHORT转BYTE数据	 * 	 * @param s	 * @return	 */	protected byte[] shortToByteArray(short s) {		byte[] shortBuf = new byte[2];		for (int i = 0; i < 2; i++) {			int offset = (shortBuf.length - 1 - i) * 8;			shortBuf[i] = (byte) ((s >>> offset) & 0xff);		}		return shortBuf;	}	/**	 * ,4,INT数据转BYTE数据	 * 	 * @param i	 * @return	 */	protected byte[] intToByteArray(int i) {		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;	}	/**	 * ,5,转换long型为byte数组	 * 	 * @param bb	 * @param x	 * @param index	 */	public byte[] longToByteArray(long x, int index) {		byte[] bb = new byte[8];		bb[index + 7] = (byte) (x >> 56);		bb[index + 6] = (byte) (x >> 48);		bb[index + 5] = (byte) (x >> 40);		bb[index + 4] = (byte) (x >> 32);		bb[index + 3] = (byte) (x >> 24);		bb[index + 2] = (byte) (x >> 16);		bb[index + 1] = (byte) (x >> 8);		bb[index + 0] = (byte) (x >> 0);		return bb;	}	/**	 * ,6,通过byte数组取到long	 * 	 * @param bb	 * @param index	 * @return	 */	public long byteArrayToLong(byte[] bb, int index) {		return ((((long) bb[index + 7] & 0xff) << 56)				| (((long) bb[index + 6] & 0xff) << 48)				| (((long) bb[index + 5] & 0xff) << 40)				| (((long) bb[index + 4] & 0xff) << 32)				| (((long) bb[index + 3] & 0xff) << 24)				| (((long) bb[index + 2] & 0xff) << 16)				| (((long) bb[index + 1] & 0xff) << 8) | (((long) bb[index + 0] & 0xff) << 0));	}	/**	 * ,7,float转换byte	 * 	 * @param bb	 * @param x	 * @param index	 */	public static byte[] floatTobyteArray(float v) {		ByteBuffer bb = ByteBuffer.allocate(4);		byte[] ret = new byte[4];		FloatBuffer fb = bb.asFloatBuffer();		fb.put(v);		bb.get(ret);		return ret;	}	/**	 * ,8,通过byte数组取得float	 * 	 * @param bb	 * @param index	 * @return	 */	public static float byteArrayToFloat(byte[] v) {		ByteBuffer bb = ByteBuffer.wrap(v);		FloatBuffer fb = bb.asFloatBuffer();		return fb.get();	}	/**	 * ,9,double转换byte	 * 	 * @param bb	 * @param x	 * @param index	 */	public byte[] doubleToByteArray(double x) {		ByteBuffer bb = ByteBuffer.allocate(8);		byte[] ret = new byte[8];		DoubleBuffer fb = bb.asDoubleBuffer();		fb.put(x);		bb.get(ret);		return ret;	}	/**	 * ,10,通过byte数组取得float	 * 	 * @param bb	 * @param index	 * @return	 */	public double byteArrayToDouble(byte[] b) {		ByteBuffer bb = ByteBuffer.wrap(b);		DoubleBuffer fb = bb.asDoubleBuffer();		return fb.get();	}	public test3() {		//例:将字符串内容转为浮点数,再还原出原字符串内容		String Content = "Contiune";		System.out.println("例:将字符串内容转为浮点数,再还原出原字符串内容");		// 1,字符串转为浮点		// (1)先将字符串转为数组		System.out.println("1,字符串转为浮点:(1)先将字符串转为数组Content="				+ StringToByte(Content));		// (2)再将数组转化为浮点		System.out.println("1,字符串转为浮点:(1)再将数组转化为浮点Content="				+ byteToDouble(StringToByte(Content)));		// 2,浮点转成字符串		// (1)先将浮点转为字节数组		System.out.println("2,浮点转成字符串:(1)先将浮点转为字节数组Content="				+ doubleToByte(byteToDouble(StringToByte(Content))));		// (2)再将字节数组转为字符串		System.out				.println("2,浮点转成字符串:(2)再将字节数组转为字符串Content="						+ ByteToString(doubleToByte(byteToDouble(StringToByte(Content)))));	}}

例:将字符串内容转为浮点数,再还原出原字符串内容

1,字符串转为浮点:(1)先将字符串转为数组Content=[B@659e0bfd
1,字符串转为浮点:(1)再将数组转化为浮点Content=3.949643824749462E180
2,浮点转成字符串:(1)先将浮点转为字节数组Content=[B@2a139a55
2,浮点转成字符串:(2)再将字节数组转为字符串Content=Contiune,即还原出原字符串内容。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/xieping/p/4714148.html

你可能感兴趣的文章
高燕婕:解读中国“十三五”智慧医疗与健康服务业之发展
查看>>
安防在金融行业应用的未来发展趋势
查看>>
世界那么大,微信国际化
查看>>
开源SDN来势汹汹 ODL中国实战弥补人才短板
查看>>
线下渠道大热 迪信通信心爆棚要“做机”
查看>>
聚焦数字营销 看中美巨头如何玩转大数据
查看>>
汇丰银行:为什么机器学习正在加速云计算的采用
查看>>
Martin Casado预测:网络基础设施并不会消亡
查看>>
阿尔卡特朗讯企业通信发布下一代的中小企业解决方案 支持云服务
查看>>
波动之后 如何看当前光伏板块盈利与投资
查看>>
共建共享 推进大数据深度应用
查看>>
一个CIO的自白:如何推动传统公司转型上云?
查看>>
光伏跟踪系统的春天还有多远?
查看>>
三伏天衣食住行注意事项
查看>>
思博伦Tweakker赢得亚洲首个 MVNO合同
查看>>
Qt之资源系统
查看>>
RDS PostgreSQL\HDB PG 毫秒级海量时空数据透视 典型案例分享
查看>>
《数据库技术原理与应用教程》一3.5.3关系模型的数据结构、操纵和约束
查看>>
《超越LOGO设计:国际顶级平面设计师的成功法则(第2版)》—第1章无处不在的LOGO...
查看>>
“首次通过图灵测试的计算机”只是一场成功的娱乐宣传
查看>>