- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
byte[]与基本类型的转换解读
2013-08-10 ???? 8?个评论 ?? ?? 作者:在路上001
收藏 ?? 我要投稿
?在Java的网络编程中传输的经常是byte数组,但我们实际中使用的数据类型可能是任一种数据类型,这就需要在它们之间相互转换,转换的核心在于将其他类型的数据的每一位转换成byte类型的数据。下面给出相关的转换代码
1.short与byte数组的互转
?
[java]/*** 转换short为byte** @param b* @param s 需要转换的short* @param index*/?public static void putShort(byte b[], short s, int index) {????? b[index + 1] = (byte) (s 8);????? b[index + 0] = (byte) (s 0);?}??/*** 通过byte数组取到short** @param b* @param index? 第几位开始取* @return*/?public static short getShort(byte[] b, int index) {?????? return (short) (((b[index + 1] 8) | b[index + 0] 0xff));?}?
/*** 转换short为byte** @param b* @param s 需要转换的short* @param index*/public static void putShort(byte b[], short s, int index) {???? b[index + 1] = (byte) (s 8);???? b[index + 0] = (byte) (s 0);}
/*** 通过byte数组取到short** @param b* @param index? 第几位开始取* @return*/public static short getShort(byte[] b, int index) {????? return (short) (((b[index + 1] 8) | b[index + 0] 0xff));}2.int与byte数组的互转
[java]/***将32位的int值放到4字节的byte数组* @param num* @return*/?public static byte[] intToByteArray(int num) {??? byte[] result = new byte[4];??? result[0] = (byte)(num 24);//取最高8位放到0下标???? result[1] = (byte)(num 16);//取次高8为放到1下标???? result[2] = (byte)(num 8); //取次低8位放到2下标???? result[3] = (byte)(num );????? //取最低8位放到3下标???? return result;?}??/*** 将4字节的byte数组转成一个int值* @param b* @return*/?public static int byteArrayToInt(byte[] b){???? byte[] a = new byte[4];???? int i = a.length - 1,j = b.length - 1;???? for (; i = 0 ; i--,j--) {//从b的尾部(即int值的低位)开始copy数据????????? if(j = 0)???????????? a[i] = b[j];???????? else???????????? a[i] = 0;//如果b.length不足4,则将高位补0??? }???? int v0 = (a[0] 0xff) 24;//0xff将byte值无差异转成int,避免Java自动类型提升后,会保留高位的符号位????? int v1 = (a[1] 0xff) 16;???? int v2 = (a[2] 0xff) 8;???? int v3 = (a[3] 0xff) ;???? return v0 + v1 + v2 + v3;?}?
/***将32位的int值放到4字节的byte数组* @param num* @return*/public static byte[] intToByteArray(int num) {?? byte[
文档评论(0)