`
熊滔爱孟涛静
  • 浏览: 124024 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多

Java与其他语言数据类型之间的转换方法实例程序

/**
* 通信格式转换
*
* Java和一些windows编程语言如c、c++、delphi所写的网络程序进行通讯时,需要进行相应的转换
* 高、低字节之间的转换
* windows的字节序为低字节开头
* linux,unix的字节序为高字节开头
* java则无论平台变化,都是高字节开头
  */

public class FormatTransfer {
/**
  * 将int转为低字节在前,高字节在后的byte数组
  * @param n int
  * @return byte[]
  */
public static byte[] toLH(int n) {
  byte[] b = new byte[4];
  b[0] = (byte) (n & 0xff);
  b[1] = (byte) (n >> 8 & 0xff);
  b[2] = (byte) (n >> 16 & 0xff);
  b[3] = (byte) (n >> 24 & 0xff);
  return b;
}

/**
  * 将int转为高字节在前,低字节在后的byte数组
  * @param n int
  * @return byte[]
  */
public static byte[] toHH(int n) {
  byte[] b = new byte[4];
  b[3] = (byte) (n & 0xff);
  b[2] = (byte) (n >> 8 & 0xff);
  b[1] = (byte) (n >> 16 & 0xff);
  b[0] = (byte) (n >> 24 & 0xff);
  return b;
}

/**
  * 将short转为低字节在前,高字节在后的byte数组
  * @param n short
  * @return byte[]
  */
public static byte[] toLH(short n) {
  byte[] b = new byte[2];
  b[0] = (byte) (n & 0xff);
  b[1] = (byte) (n >> 8 & 0xff);
  return b;
}

/**
  * 将short转为高字节在前,低字节在后的byte数组
  * @param n short
  * @return byte[]
  */
public static byte[] toHH(short n) {
  byte[] b = new byte[2];
  b[1] = (byte) (n & 0xff);
  b[0] = (byte) (n >> 8 & 0xff);
  return b;
}

 

/**
  * 将将int转为高字节在前,低字节在后的byte数组

public static byte[] toHH(int number) {
  int temp = number;
  byte[] b = new byte[4];
  for (int i = b.length - 1; i > -1; i--) {
    b = new Integer(temp & 0xff).byteValue();
    temp = temp >> 8;
  }
  return b;
}

public static byte[] IntToByteArray(int i) {
    byte[] abyte0 = new byte[4];
    abyte0[3] = (byte) (0xff & i);
    abyte0[2] = (byte) ((0xff00 & i) >> 8);
    abyte0[1] = (byte) ((0xff0000 & i) >> 16);
    abyte0[0] = (byte) ((0xff000000 & i) >> 24);
    return abyte0;
}


*/

/**
  * 将float转为低字节在前,高字节在后的byte数组
  */
public static byte[] toLH(float f) {
  return toLH(Float.floatToRawIntBits(f));
}

/**
  * 将float转为高字节在前,低字节在后的byte数组
  */
public static byte[] toHH(float f) {
  return toHH(Float.floatToRawIntBits(f));
}

/**
  * 将String转为byte数组
  */
public static byte[] stringToBytes(String s, int length) {
  while (s.getBytes().length < length) {
    s += " ";
  }
  return s.getBytes();
}


/**
  * 将字节数组转换为String
  * @param b byte[]
  * @return String
  */
public static String bytesToString(byte[] b) {
  StringBuffer result = new StringBuffer("");
  int length = b.length;
  for (int i=0; i<length; i++) {
    result.append((char)(b & 0xff));
  }
  return result.toString();
}

/**
  * 将字符串转换为byte数组
  * @param s String
  * @return byte[]
  */
public static byte[] stringToBytes(String s) {
  return s.getBytes();
}

/**
  * 将高字节数组转换为int
  * @param b byte[]
  * @return int
  */
public static int hBytesToInt(byte[] b) {
  int s = 0;
  for (int i = 0; i < 3; i++) {
    if (b >= 0) {
    s = s + b;
    } else {
    s = s + 256 + b;
    }
    s = s * 256;
  }
  if (b[3] >= 0) {
    s = s + b[3];
  } else {
    s = s + 256 + b[3];
  }
  return s;
}

/**
  * 将低字节数组转换为int
  * @param b byte[]
  * @return int
  */
public static int lBytesToInt(byte[] b) {
  int s = 0;
  for (int i = 0; i < 3; i++) {
    if (b[3-i] >= 0) {
    s = s + b[3-i];
    } else {
    s = s + 256 + b[3-i];
    }
    s = s * 256;
  }
  if (b[0] >= 0) {
    s = s + b[0];
  } else {
    s = s + 256 + b[0];
  }
  return s;
}


/**
  * 高字节数组到short的转换
  * @param b byte[]
  * @return short
  */
public static short hBytesToShort(byte[] b) {
  int s = 0;
  if (b[0] >= 0) {
    s = s + b[0];
    } else {
    s = s + 256 + b[0];
    }
    s = s * 256;
  if (b[1] >= 0) {
    s = s + b[1];
  } else {
    s = s + 256 + b[1];
  }
  short result = (short)s;
  return result;
}

/**
  * 低字节数组到short的转换
  * @param b byte[]
  * @return short
  */
public static short lBytesToShort(byte[] b) {
  int s = 0;
  if (b[1] >= 0) {
    s = s + b[1];
    } else {
    s = s + 256 + b[1];
    }
    s = s * 256;
  if (b[0] >= 0) {
    s = s + b[0];
  } else {
    s = s + 256 + b[0];
  }
  short result = (short)s;
  return result;
}

/**
  * 高字节数组转换为float
  * @param b byte[]
  * @return float
  */
public static float hBytesToFloat(byte[] b) {
  int i = 0;
  Float F = new Float(0.0);
  i = ((((b[0]&0xff)<<8 | (b[1]&0xff))<<8) | (b[2]&0xff))<<8 | (b[3]&0xff);
  return F.intBitsToFloat(i);
}

/**
  * 低字节数组转换为float
  * @param b byte[]
  * @return float
  */
public static float lBytesToFloat(byte[] b) {
  int i = 0;
  Float F = new Float(0.0);
  i = ((((b[3]&0xff)<<8 | (b[2]&0xff))<<8) | (b[1]&0xff))<<8 | (b[0]&0xff);
  return F.intBitsToFloat(i);
}

/**
  * 将byte数组中的元素倒序排列
  */
public static byte[] bytesReverseOrder(byte[] b) {
  int length = b.length;
  byte[] result = new byte[length];
  for(int i=0; i<length; i++) {
    result[length-i-1] = b;
  }
  return result;
}

/**
  * 打印byte数组
  */
public static void printBytes(byte[] bb) {
  int length = bb.length;
  for (int i=0; i<length; i++) {
    System.out.print(bb + " ");
  }
  System.out.println("");
}

public static void logBytes(byte[] bb) {
  int length = bb.length;
  String out = "";
  for (int i=0; i<length; i++) {
    out = out + bb + " ";
  }

}

/**
  * 将int类型的值转换为字节序颠倒过来对应的int值
  * @param i int
  * @return int
  */
public static int reverseInt(int i) {
  int result = FormatTransfer.hBytesToInt(FormatTransfer.toLH(i));
  return result;
}

/**
  * 将short类型的值转换为字节序颠倒过来对应的short值
  * @param s short
  * @return short
  */
public static short reverseShort(short s) {
  short result = FormatTransfer.hBytesToShort(FormatTransfer.toLH(s));
  return result;
}

/**
  * 将float类型的值转换为字节序颠倒过来对应的float值
  * @param f float
  * @return float
  */
public static float reverseFloat(float f) {
  float result = FormatTransfer.hBytesToFloat(FormatTransfer.toLH(f));
  return result;
}

}

分享到:
评论

相关推荐

    Android数据类型之间相互转换系统介绍

    本文主要针对初学者面临的Android数据类型转换问题进行详细介绍。 Android中的数据类型主要遵循Java的分类,包括布尔型、字符型和数值型。数值型进一步分为整型(byte、short、int、long)和浮点型(float、double...

    Android应用编程基础第6篇】Java语言的数据类型

    在讲解Android应用编程基础时,了解Java语言的数据类型是至关重要的。Java是一种静态类型语言,这意味着在编写程序时,每个变量和每个表达式的类型必须事先声明。Java的数据类型可以分为基本类型和引用类型两种。...

    android C/C++ JNI普通数据类型 测试工程

    在本文中,我们将深入探讨JNI中的数据类型转换以及如何在C/C++代码和Java代码之间使用它们。 首先,JNI提供了一套与Java数据类型相对应的C数据类型。例如,Java的`int`在JNI中对应的是`jint`,`float`对应`jfloat`...

    android GBK转换为String

    本文将深入探讨如何在Android中进行GBK与Unicode之间的转换。 首先,我们需要理解字符编码的基本概念。字符编码是用来表示文字的一种方式,如ASCII、GB2312、GBK、UTF-8等。GBK是在GB2312基础上增加了一些繁体字和...

    apploc语言类型转换工具

    【apploc语言类型转换工具】是一款专为解决跨语言系统应用问题而设计的实用工具。在计算机编程领域,尤其是在开发支持多语言的应用程序时,语言文件(通常为资源文件)是至关重要的,它们包含了应用程序中所有的本地...

    tabgible多种语言转换器,可转换

    这个转换器支持的语言包括C++、C#、Java和VB(Visual Basic),这使得它在跨平台开发或者在不同技术栈之间迁移项目时特别有用。其主要功能是提升读码速度,即理解和解析代码的效率,以及提高整体的开发效率。"无限制...

    android aidl 复杂数据类型 传图片

    这就是在Android中使用AIDL处理复杂数据类型,特别是图片的整个流程。需要注意的是,由于AIDL涉及进程通信,所以会有一定的性能开销,因此在设计时要尽可能优化数据传递方式,避免频繁的大数据交换。同时,文件权限...

    Android-KatzKotlin的函数数据类型和抽象

    在Android开发中,Kotlin是一种备受推崇的编程语言,它以其简洁、安全和表达性强的特点深受开发者喜爱。本文将深入探讨Kotlin中的函数数据类型和抽象概念,这对于理解和提升Kotlin编程技能至关重要。 首先,我们来...

    Java4Android 05_Java的基本数据类型

    本节课程“Java4Android 05_Java的基本数据类型”专注于讲解Java编程中的基本数据类型,这对于初学者来说是理解Java语法的基础。 Java的基本数据类型分为四大类:整型、浮点型、字符型和布尔型。每种类型都有其特定...

    Android-一个简洁的汇率转换软件使用kotlin编写

    在Android平台上,Kotlin语言以其简洁、安全和富有表达力的特性,日益成为开发者们首选的编程语言。本项目是一个基于Kotlin的简洁汇率转换应用,它利用了Anko库来简化UI创建,并实现了主题的动态切换效果,为用户...

    精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)

    教程中提供了将两款经典的3D射击游戏“Wolfenstein 3D”和“Doom”移植到Android平台的实例,展示了如何将PC上的复杂游戏转换为移动设备上的游戏体验。 此外,教程中不仅包含了已公布的移植技巧,还融入了作者的...

    Android 通过jni返回Mat数据类型方法

    Android 通过JNI返回Mat数据类型方法 Android 应用程序开发中,为了提高代码的高效性,通常需要调用本地C++代码,JNI(Java Native Interface)是Java语言提供的和C/C++相互沟通的机制。特别是在使用OpenCV进行...

    Android简体/繁体字符相互转换

    本项目专注于实现Android平台上的简体和繁体字符的相互转换功能,同时提供了判断字符语言的能力,使得开发者可以方便地在应用程序中集成这种功能。 首先,我们要了解简体中文和繁体中文的基本差异。简体中文是现代...

    Android 塔防游戏源码

    9. **事件处理**:Android的触摸事件处理机制是通过OnClickListener、OnTouchListener等接口实现的,玩家的点击操作会被转换为游戏中的相应动作。 在深入研究源码时,你可以关注以下几个方面来学习和理解: - **...

    android jni调用jni 方法

    6. **数据类型转换** - JNI提供了许多数据类型,如`jboolean`, `jbyte`, `jshort`, `jint`, `jlong`, `jfloat`, `jdouble`, `jobject`等,用于在Java和C/C++之间转换数据类型。 - 比如,从Java的`String`到C++的`...

    Android 简繁体互转库

    在Android平台上,开发人员经常需要处理简体中文与繁体中文之间的转换问题,特别是在本地化应用或者处理用户输入时。"Android 简繁体互转库"就是为了满足这一需求而设计的,它提供了一个方便的API接口,使得开发者...

    利用JAXB进行xml和javabean之间转换

    在Java世界中,XML(可扩展标记语言)作为一种数据交换格式,被广泛用于存储和传输数据。而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档...

    android黄金转换小工具源码

    在Android平台上,开发一个“黄金转换小工具”涉及到多个关键知识点,主要涵盖了移动应用开发、数据处理、货币汇率计算以及用户界面设计。以下是对这些知识点的详细解释: 1. **Android应用开发**:Android是Google...

    【Android】JSON数据的读写方法

    在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地阅读和编写。JSON数据的读写是Android应用开发中的常见任务,尤其是在进行网络通信、数据存储或者数据...

    Mono For Android 贪吃蛇游戏源码

    在将 C# 代码转换为 Java 时,需要熟悉它们在控制流程、数据类型、接口和继承等方面的不同之处。 2. **Android 开发基础**:学习 Android SDK,理解 Android 应用的组件(Activity、Service、BroadcastReceiver、...

Global site tag (gtag.js) - Google Analytics