Android游戏中其他语言数据类型之间的换方法

本文展示了Java中如何实现整数、短整数、浮点数和字符串等数据类型之间的高效转换,包括字节序转换、高低字节转换以及特定格式的数据转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java与其他语言数据类型之间的转换方法实例程序
<div class="code">/**<br>* 通信格式转换<br>*<br>* java和一些windows编程语言如c、c++、delphi所写的网络程序进行通讯时,需要进行相应的转换<br>* 高、低字节之间的转换<br>* windows的字节序为低字节开头<br>* linux,unix的字节序为高字节开头<br>* java则无论平台变化,都是高字节开头<br>  */
public class formattransfer {<br>/**<br>  * 将int转为低字节在前,高字节在后的byte数组<br>  * @param n int<br>  * @return byte[]<br>  */<br>public static byte[] tolh(int n) {<br>  byte[] b = new byte[4];<br>  b[0] = (byte) (n & 0xff);<br>  b[1] = (byte) (n >> 8 & 0xff);<br>  b[2] = (byte) (n >> 16 & 0xff);<br>  b[3] = (byte) (n >> 24 & 0xff);<br>  return b;<br>}
/**<br>  * 将int转为高字节在前,低字节在后的byte数组<br>  * @param n int<br>  * @return byte[]<br>  */<br>public static byte[] tohh(int n) {<br>  byte[] b = new byte[4];<br>  b[3] = (byte) (n & 0xff);<br>  b[2] = (byte) (n >> 8 & 0xff);<br>  b[1] = (byte) (n >> 16 & 0xff);<br>  b[0] = (byte) (n >> 24 & 0xff);<br>  return b;<br>}
/**<br>  * 将short转为低字节在前,高字节在后的byte数组<br>  * @param n short<br>  * @return byte[]<br>  */<br>public static byte[] tolh(short n) {<br>  byte[] b = new byte[2];<br>  b[0] = (byte) (n & 0xff);<br>  b[1] = (byte) (n >> 8 & 0xff);<br>  return b;<br>}
/**<br>  * 将short转为高字节在前,低字节在后的byte数组<br>  * @param n short<br>  * @return byte[]<br>  */<br>public static byte[] tohh(short n) {<br>  byte[] b = new byte[2];<br>  b[1] = (byte) (n & 0xff);<br>  b[0] = (byte) (n >> 8 & 0xff);<br>  return b;<br>}
 
/**<br>  * 将将int转为高字节在前,低字节在后的byte数组
public static byte[] tohh(int number) {<br>  int temp = number;<br>  byte[] b = new byte[4];<br>  for (int i = b.length - 1; i > -1; i--) {<br>    b = new integer(temp & 0xff).bytevalue();<br>    temp = temp >> 8;<br>  }<br>  return b;<br>}
public static byte[] inttobytearray(int i) {<br>    byte[] abyte0 = new byte[4];<br>    abyte0[3] = (byte) (0xff & i);<br>    abyte0[2] = (byte) ((0xff00 & i) >> 8);<br>    abyte0[1] = (byte) ((0xff0000 & i) >> 16);<br>    abyte0[0] = (byte) ((0xff000000 & i) >> 24);<br>    return abyte0;<br>}
<br>*/
/**<br>  * 将float转为低字节在前,高字节在后的byte数组<br>  */<br>public static byte[] tolh(float f) {<br>  return tolh(float.floattorawintbits(f));<br>}
/**<br>  * 将float转为高字节在前,低字节在后的byte数组<br>  */<br>public static byte[] tohh(float f) {<br>  return tohh(float.floattorawintbits(f));<br>}
/**<br>  * 将string转为byte数组<br>  */<br>public static byte[] stringtobytes(string s, int length) {<br>  while (s.getbytes().length < length) {<br>    s += " ";<br>  }<br>  return s.getbytes();<br>}
<br>/**<br>  * 将字节数组转换为string<br>  * @param b byte[]<br>  * @return string<br>  */<br>public static string bytestostring(byte[] b) {<br>  stringbuffer result = new stringbuffer("");<br>  int length = b.length;<br>  for (int i=0; i<length; i++) {<br>    result.append((char)(b & 0xff));<br>  }<br>  return result.tostring();<br>}
/**<br>  * 将字符串转换为byte数组<br>  * @param s string<br>  * @return byte[]<br>  */<br>public static byte[] stringtobytes(string s) {<br>  return s.getbytes();<br>}
/**<br>  * 将高字节数组转换为int<br>  * @param b byte[]<br>  * @return int<br>  */<br>public static int hbytestoint(byte[] b) {<br>  int s = 0;<br>  for (int i = 0; i < 3; i++) {<br>    if (b >= 0) {<br>    s = s + b;<br>    } else {<br>    s = s + 256 + b;<br>    }<br>    s = s * 256;<br>  }<br>  if (b[3] >= 0) {<br>    s = s + b[3];<br>  } else {<br>    s = s + 256 + b[3];<br>  }<br>  return s;<br>}
/**<br>  * 将低字节数组转换为int<br>  * @param b byte[]<br>  * @return int<br>  */<br>public static int lbytestoint(byte[] b) {<br>  int s = 0;<br>  for (int i = 0; i < 3; i++) {<br>    if (b[3-i] >= 0) {<br>    s = s + b[3-i];<br>    } else {<br>    s = s + 256 + b[3-i];<br>    }<br>    s = s * 256;<br>  }<br>  if (b[0] >= 0) {<br>    s = s + b[0];<br>  } else {<br>    s = s + 256 + b[0];<br>  }<br>  return s;<br>}
<br>/**<br>  * 高字节数组到short的转换<br>  * @param b byte[]<br>  * @return short<br>  */<br>public static short hbytestoshort(byte[] b) {<br>  int s = 0;<br>  if (b[0] >= 0) {<br>    s = s + b[0];<br>    } else {<br>    s = s + 256 + b[0];<br>    }<br>    s = s * 256;<br>  if (b[1] >= 0) {<br>    s = s + b[1];<br>  } else {<br>    s = s + 256 + b[1];<br>  }<br>  short result = (short)s;<br>  return result;<br>}
/**<br>  * 低字节数组到short的转换<br>  * @param b byte[]<br>  * @return short<br>  */<br>public static short lbytestoshort(byte[] b) {<br>  int s = 0;<br>  if (b[1] >= 0) {<br>    s = s + b[1];<br>    } else {<br>    s = s + 256 + b[1];<br>    }<br>    s = s * 256;<br>  if (b[0] >= 0) {<br>    s = s + b[0];<br>  } else {<br>    s = s + 256 + b[0];<br>  }<br>  short result = (short)s;<br>  return result;<br>}
/**<br>  * 高字节数组转换为float<br>  * @param b byte[]<br>  * @return float<br>  */<br>public static float hbytestofloat(byte[] b) {<br>  int i = 0;<br>  float f = new float(0.0);<br>  i = ((((b[0]&0xff)<<8 | (b[1]&0xff))<<8) | (b[2]&0xff))<<8 | (b[3]&0xff);<br>  return f.intbitstofloat(i);<br>}
/**<br>  * 低字节数组转换为float<br>  * @param b byte[]<br>  * @return float<br>  */<br>public static float lbytestofloat(byte[] b) {<br>  int i = 0;<br>  float f = new float(0.0);<br>  i = ((((b[3]&0xff)<<8 | (b[2]&0xff))<<8) | (b[1]&0xff))<<8 | (b[0]&0xff);<br>  return f.intbitstofloat(i);<br>}
/**<br>  * 将byte数组中的元素倒序排列<br>  */<br>public static byte[] bytesreverseorder(byte[] b) {<br>  int length = b.length;<br>  byte[] result = new byte[length];<br>  for(int i=0; i<length; i++) {<br>    result[length-i-1] = b;<br>  }<br>  return result;<br>}
/**<br>  * 打印byte数组<br>  */<br>public static void printbytes(byte[] bb) {<br>  int length = bb.length;<br>  for (int i=0; i<length; i++) {<br>    system.out.print(bb + " ");<br>  }<br>  system.out.println("");<br>}
public static void logbytes(byte[] bb) {<br>  int length = bb.length;<br>  string out = "";<br>  for (int i=0; i<length; i++) {<br>    out = out + bb + " ";<br>  }
}
/**<br>  * 将int类型的值转换为字节序颠倒过来对应的int值<br>  * @param i int<br>  * @return int<br>  */<br>public static int reverseint(int i) {<br>  int result = formattransfer.hbytestoint(formattransfer.tolh(i));<br>  return result;<br>}
/**<br>  * 将short类型的值转换为字节序颠倒过来对应的short值<br>  * @param s short<br>  * @return short<br>  */<br>public static short reverseshort(short s) {<br>  short result = formattransfer.hbytestoshort(formattransfer.tolh(s));<br>  return result;<br>}
/**<br>  * 将float类型的值转换为字节序颠倒过来对应的float值<br>  * @param f float<br>  * @return float<br>  */<br>public static float reversefloat(float f) {<br>  float result = formattransfer.hbytestofloat(formattransfer.tolh(f));<br>  return result;<br>}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值