byte[]与基本类型的转换解读.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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)

22ffbqq + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档