`
qqjavagood
  • 浏览: 99075 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多
    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 &amp; 0xff);<br>  b[1] = (byte) (n >> 8 &amp; 0xff);<br>  b[2] = (byte) (n >> 16 &amp; 0xff);<br>  b[3] = (byte) (n >> 24 &amp; 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 &amp; 0xff);<br>  b[2] = (byte) (n >> 8 &amp; 0xff);<br>  b[1] = (byte) (n >> 16 &amp; 0xff);<br>  b[0] = (byte) (n >> 24 &amp; 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 &amp; 0xff);<br>  b[1] = (byte) (n >> 8 &amp; 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 &amp; 0xff);<br>  b[0] = (byte) (n >> 8 &amp; 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 &amp; 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 &amp; i);<br>    abyte0[2] = (byte) ((0xff00 &amp; i) >>;<br>    abyte0[1] = (byte) ((0xff0000 &amp; i) >> 16);<br>    abyte0[0] = (byte) ((0xff000000 &amp; 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 &amp; 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]&amp;0xff)<<8 | (b[1]&amp;0xff))<<8) | (b[2]&amp;0xff))<<8 | (b[3]&amp;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]&amp;0xff)<<8 | (b[2]&amp;0xff))<<8) | (b[1]&amp;0xff))<<8 | (b[0]&amp;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>}
}
0
0
分享到:
评论

相关推荐

    android 游戏源码 棋类游戏 象棋

    3. **Activity和Fragment**:在Android中,Activity代表应用程序中的一个可视屏幕,而Fragment可以看作是Activity的一部分,可以在多个屏幕之间复用。游戏界面的布局和交互可能由Activity和Fragment共同完成。 4. *...

    Android NDK编程C++初识,基本数据类型使用

    本文将深入探讨Android NDK编程中的C++基础,特别是其基本数据类型的使用。 首先,了解C++的基本数据类型是学习任何C++编程的基础。在C++中,我们有以下几种主要的基本数据类型: 1. 整型:`int`,`short`,`long`...

    从零开始Android游戏编程

    1. **Java编程基础**:Android游戏主要使用Java语言编写,因此首先你需要掌握Java的基础知识,包括数据类型、控制结构、类与对象、异常处理等。 2. **Android SDK与环境配置**:了解如何安装和配置Android Studio,...

    android 与 lua 相互调用

    4. **数据类型转换**:由于Lua和Java的数据类型不同,所以在两者之间传递数据时需要进行转换。例如,Lua中的字符串、数字可以直接映射到Java的String和double,但表需要转换为Java的Map,用户自定义对象则可能需要...

    android小游戏“打飞机(雷电)”源码 注释很详细

    《Android小游戏“打飞机(雷电)”源码解析与技术要点详解》 在移动设备上,游戏一直是用户最喜爱...对于初学者而言,通过学习这个游戏的源码,可以对Android游戏开发有更深入的理解,同时也为进阶开发打下坚实基础。

    android aidl 不同进程间通信

    在Aidl文件中,我们可以定义接口、数据类型和方法。例如,一个简单的Aidl接口定义如下: ```aidl package com.example.myapp; interface IMyService { void sendMessage(int code, string message); } ``` 这里...

    Android游戏矩形碰撞Demo源码.rar

    这个"Android游戏矩形碰撞Demo源码"提供了一个实际应用案例,帮助开发者理解如何在Android游戏中实现两个矩形之间的碰撞检测。以下是对该源码及其涉及知识点的详细解析。 1. **Android游戏框架** Android游戏开发...

    android大学生开发的手机游戏

    这款游戏集成了“真心话大冒险”和“我是卧底”等多种社交游戏玩法,这展示了开发者对于游戏类型多样性的理解与把握。真心话大冒险通常需要玩家在特定情境下选择回答问题或接受挑战,这种游戏模式需要开发者设计丰富...

    android飞机游戏源码

    首先,Android游戏开发是Android应用程序开发的一个分支,它涉及到Java编程语言、Android SDK(软件开发工具包)以及Android Studio集成开发环境的使用。开发者需要理解Android的基本架构,包括Activity、Service、...

    2015良心系列_Android版塔防游戏源码

    本源码集成了丰富的游戏逻辑、用户界面设计以及Android系统兼容性处理,对于学习Android游戏开发的开发者来说,这是一个不可多得的学习资源。 首先,我们要明确Android开发的基础知识,它基于Java语言,使用Android...

    android 打飞机游戏

    Android游戏通常基于Android SDK构建,使用Java或Kotlin作为主要编程语言。开发者需要理解Activity、Service、Intent等Android核心组件的工作原理,以便在游戏中正确处理用户交互和后台逻辑。 游戏画面的呈现则依赖...

    基于Android的飞机大战游戏设计与开发.doc

    Android 平台的飞机大战游戏设计与开发的知识点,包括 Android 平台概述、Eclipse 和 Android ADT 集成开发平台、Android 游戏开发、SurfaceView 绘制游戏界面、Android 生命週期、广播机制、Java 语言、SQLite ...

    android魔塔游戏

    《Android魔塔游戏》是一款基于Android平台的经典...而压缩包中的“MagicTower”很可能包含了游戏的源代码、资源文件、配置文件等,通过学习和研究这些内容,我们可以更深入地了解Android游戏开发的实践技巧和策略。

    AndroidLua-master

    - 学习Lua语言:理解其基本语法、数据类型和控制结构,是利用"AndroidLua-master"的基础。 - 探索更多库:Lua拥有丰富的第三方库,如Corona SDK、LÖVE等,可以扩展Android应用的功能。 - 深入理解JNI:掌握JNI的...

    基于安卓Android的忍者快跑游戏源码.zip

    首先,Android游戏开发的基础是Java或Kotlin语言,本项目可能采用其中的一种。Java是Android早期的主要开发语言,而Kotlin作为Google官方推荐的现代语言,因其简洁和安全特性在近年来受到广泛欢迎。开发者需要熟悉这...

    疯狂android讲义合金弹头完整yuan代码

    在这个项目中,你将有机会接触到Android游戏编程的核心概念和技术。 "合金弹头"是一款经典的横版射击游戏,其源代码的分析对于学习2D游戏开发非常有帮助。在Android平台上,你可以学习到如何使用SurfaceView进行...

    安卓Android源码——四款小游戏源码分析.zip

    首先,我们要了解Android游戏开发的基础,它是基于Java语言的,而现代的Android应用则更多地使用Kotlin。不过,由于这些源码未指定语言,我们可以假设它们可能是用Java编写的,因为早期的Android开发更倾向于使用...

    android调用C/C++

    - JNI接口定义了Java和本地代码之间的通信协议,包括函数调用规范、数据类型映射、异常处理等。 - 在Android中,JNI头文件`&lt;jni.h&gt;`提供了必要的API,用于定义方法签名、创建本地方法、访问Java对象和类等。 2. *...

    Android多媒体开发10-着色语言.ppt

    在数据类型方面,OpenGL ES着色语言提供了多种基础类型,包括标量(如浮点型、整型和布尔型)、矩阵型(如Mat2、Mat3和Mat4)以及向量型(如vec2、vec3、vec4等)。向量类型不仅包含浮点数和整数,还有布尔值,甚至...

Global site tag (gtag.js) - Google Analytics