- 浏览: 124701 次
- 性别:
- 来自: 深圳
最新评论
-
T_bag:
...
TabHost 中的Activity执行顺序 -
ihopethatwell:
楼主,你能否写一个 int类型的一维数组的结构体?
linux NDK实例 -
gf_crazy:
刚好找第二种,其他地方全是第一种。
TabHost -
gangbener:
我们是可以把不同分辨率的图片放到不同的图片文件夹中去,问题是: ...
android程序中屏幕问题解决方案 -
shusanzhan:
学习了,Mark
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.os.NetworkOnMainThreadException
2011-12-24 13:14 1233不能在android的主线程中,执行一个网络操作 ... -
转载:为什么要对URI进行编码
2011-12-15 15:49 1078为什么需要Url编码,通常如果一样东西需要编码,说明这样东 ... -
multipart form-data boundary
2011-12-15 15:23 1022含义 ENCTYPE="multipart/ ... -
android http 附件
2011-12-15 14:17 1659一:服务器端: 1:struts-config.xml ... -
post 附件
2011-12-15 10:24 1004在做嘀咕客户端的时候,要实现拍照上传的功能。根据嘀咕api ... -
让Android应用获取系统权限
2011-12-08 18:46 1003在 android 的API中有提供 SystemCloc ... -
Android源码目录结构详解
2011-12-01 20:22 848Android 2.1 |-- Makefile |-- ... -
两个activity跳转
2011-11-25 16:06 1277Activity A跳转到 Activity B /**A. ... -
线程同步之wait()/notify()的使用
2011-11-21 11:24 998wait()/notify() 通常,多 ... -
游戏中渲染线程与更新线程交替执行
2011-11-21 11:21 944private final State mThreadLock ... -
android colormatrix
2011-11-03 17:32 1496在编程中有时候需要 ... -
java栈,堆,池
2011-07-08 09:38 748今天复习了一下这些知识,顺便做了下笔记.1.寄存器:最快的存储 ... -
3D开发的境界
2011-06-04 20:12 704第一阶段:初学者阶 ... -
Http
2011-06-01 17:10 1311使用 HTTP 服务: 1. Apache HttpCline ... -
获取手机的Opengl的支持版本
2011-05-27 09:28 1464public int getGLVersion() { ... -
性能优化
2011-05-27 09:26 790如果你想写一个 Java 程序,观察某对象什么时候会被垃圾收集 ... -
android canvas.getClipBounds
2011-05-13 17:41 8439一种是传参数: Rect dstRect = new Re ... -
获取屏幕大小的方法
2011-05-13 17:38 601// one DisplayMetrics dm = n ... -
Android Lock 使用
2011-05-13 16:43 3205PowerManager 和PowerManager.Wa ... -
为Android编写实时游戏
2011-05-06 15:57 1312为Android编写实时游戏 —-学习笔记 这篇文章是 ...
相关推荐
本文主要针对初学者面临的Android数据类型转换问题进行详细介绍。 Android中的数据类型主要遵循Java的分类,包括布尔型、字符型和数值型。数值型进一步分为整型(byte、short、int、long)和浮点型(float、double...
在讲解Android应用编程基础时,了解Java语言的数据类型是至关重要的。Java是一种静态类型语言,这意味着在编写程序时,每个变量和每个表达式的类型必须事先声明。Java的数据类型可以分为基本类型和引用类型两种。...
在本文中,我们将深入探讨JNI中的数据类型转换以及如何在C/C++代码和Java代码之间使用它们。 首先,JNI提供了一套与Java数据类型相对应的C数据类型。例如,Java的`int`在JNI中对应的是`jint`,`float`对应`jfloat`...
本文将深入探讨如何在Android中进行GBK与Unicode之间的转换。 首先,我们需要理解字符编码的基本概念。字符编码是用来表示文字的一种方式,如ASCII、GB2312、GBK、UTF-8等。GBK是在GB2312基础上增加了一些繁体字和...
【apploc语言类型转换工具】是一款专为解决跨语言系统应用问题而设计的实用工具。在计算机编程领域,尤其是在开发支持多语言的应用程序时,语言文件(通常为资源文件)是至关重要的,它们包含了应用程序中所有的本地...
这个转换器支持的语言包括C++、C#、Java和VB(Visual Basic),这使得它在跨平台开发或者在不同技术栈之间迁移项目时特别有用。其主要功能是提升读码速度,即理解和解析代码的效率,以及提高整体的开发效率。"无限制...
这就是在Android中使用AIDL处理复杂数据类型,特别是图片的整个流程。需要注意的是,由于AIDL涉及进程通信,所以会有一定的性能开销,因此在设计时要尽可能优化数据传递方式,避免频繁的大数据交换。同时,文件权限...
在Android开发中,Kotlin是一种备受推崇的编程语言,它以其简洁、安全和表达性强的特点深受开发者喜爱。本文将深入探讨Kotlin中的函数数据类型和抽象概念,这对于理解和提升Kotlin编程技能至关重要。 首先,我们来...
本节课程“Java4Android 05_Java的基本数据类型”专注于讲解Java编程中的基本数据类型,这对于初学者来说是理解Java语法的基础。 Java的基本数据类型分为四大类:整型、浮点型、字符型和布尔型。每种类型都有其特定...
在Android平台上,Kotlin语言以其简洁、安全和富有表达力的特性,日益成为开发者们首选的编程语言。本项目是一个基于Kotlin的简洁汇率转换应用,它利用了Anko库来简化UI创建,并实现了主题的动态切换效果,为用户...
教程中提供了将两款经典的3D射击游戏“Wolfenstein 3D”和“Doom”移植到Android平台的实例,展示了如何将PC上的复杂游戏转换为移动设备上的游戏体验。 此外,教程中不仅包含了已公布的移植技巧,还融入了作者的...
Android 通过JNI返回Mat数据类型方法 Android 应用程序开发中,为了提高代码的高效性,通常需要调用本地C++代码,JNI(Java Native Interface)是Java语言提供的和C/C++相互沟通的机制。特别是在使用OpenCV进行...
本项目专注于实现Android平台上的简体和繁体字符的相互转换功能,同时提供了判断字符语言的能力,使得开发者可以方便地在应用程序中集成这种功能。 首先,我们要了解简体中文和繁体中文的基本差异。简体中文是现代...
9. **事件处理**:Android的触摸事件处理机制是通过OnClickListener、OnTouchListener等接口实现的,玩家的点击操作会被转换为游戏中的相应动作。 在深入研究源码时,你可以关注以下几个方面来学习和理解: - **...
6. **数据类型转换** - JNI提供了许多数据类型,如`jboolean`, `jbyte`, `jshort`, `jint`, `jlong`, `jfloat`, `jdouble`, `jobject`等,用于在Java和C/C++之间转换数据类型。 - 比如,从Java的`String`到C++的`...
在Android平台上,开发人员经常需要处理简体中文与繁体中文之间的转换问题,特别是在本地化应用或者处理用户输入时。"Android 简繁体互转库"就是为了满足这一需求而设计的,它提供了一个方便的API接口,使得开发者...
在Java世界中,XML(可扩展标记语言)作为一种数据交换格式,被广泛用于存储和传输数据。而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档...
在Android平台上,开发一个“黄金转换小工具”涉及到多个关键知识点,主要涵盖了移动应用开发、数据处理、货币汇率计算以及用户界面设计。以下是对这些知识点的详细解释: 1. **Android应用开发**:Android是Google...
在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人和机器都能容易地阅读和编写。JSON数据的读写是Android应用开发中的常见任务,尤其是在进行网络通信、数据存储或者数据...
在将 C# 代码转换为 Java 时,需要熟悉它们在控制流程、数据类型、接口和继承等方面的不同之处。 2. **Android 开发基础**:学习 Android SDK,理解 Android 应用的组件(Activity、Service、BroadcastReceiver、...