Android 和 windows C/C++/QT通讯时字节存储

ava:采用大端字节序存储数据【低地址存放数据的高位,高地址存放数据的低位,数据高位存放在数组的前面】

windows(intel平台):采用小端字节序存储数据【低地址存放数据的低位,高地址存放数据的高位,数据的高位存放在数组的后面】(windows接收java发送过来的short,int需要调用ntohs和ntohl来转换到小数端)

【数据高位】:0x1234的高位为 0x12

【数据低位】:0x1234的低位为 0x34

如: int ihex = 0x12345678;

short shex=0x1234;

java内存中存储为:

byte[] = { '0x12','0x34','0x56','0x78'}
byte[] = { '0x12','0x34'}

而windows下(intel cpu):

c/c++/qt 存储为

一个字符数组地址是从首地址开始递增的,也就是数组下标越大,内存地址越大。

=====char[] 前面是低地址,后面是高地址

char [] = {'0x78','0x56','0x34','0x12'} //QByteArray和char[]一致
char [] = {'0x34','0x12'}

设计java端client程序时,需要我们在程序中显式采用大端字节序来处理int,short,long(字符串不需要考虑),即将int,short,long转换成byte[]。【将short,int的高位存储在字符数组的前面】当然你想用小字节存放也可以,socket收到数据后打印出来看int,short的16进制数字节序,然后做处理即可。

函数如下:(大端字节序存储的函数)

/*整型转化成字符序列,类似的函数baidu可以找到很多
*执行位操作,将int i = 0x12345678; 对应二进制:
*内存中存放:低地址
*00010010 0x12
*00110100 0x34
*01010110 0x56
*01111000 0x78
*高地址
*/

// 存放到byte[]={'0x12','0x34','0x56','0x78'}位置处

public static byte[] intToBytes(int i)
{
 //bytes[0] = 00010010
 //bytes[1] = 00110100
 //bytes[2] = 01010110
 //bytes[3] = 01111000
 byte bytes[] = new byte[4];
 for (int j = 3; j >= 0; j--)
  bytes[3 - j] = (byte)(i >> 8 * (3 - j) & 0xff); //bytes[0] :直接将i的低8bits和0xff与操作即可,此时j=3

 return bytes;
}
public static byte[] shortToBytes(short s)
{
 byte bytes[] = new byte[2];

 bytes[0]=(byte)(0xFF&(s>>8)); //低地址存放高位数据,低位数据被右移8bits后删除了。(返回高8位值)
 bytes[1]=(byte)(0xFF&s); //高地址存放低位数据,位操作当然是低位执行的与操作。当前只和8bits与,(即返回低8bits值)

 return bytes;
}

以上就是对android java 和 windows C/C++/QT通讯时 数据存放字节序的理解,有需要的可以参考下

(0)

相关推荐

  • 图解Windows环境下Android Studio安装和使用教程

    鉴于谷歌最新推出的Android Studio备受开发者的推崇,所以也跟着体验一下. 一.介绍Android Studio  Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试. 最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环

  • 利用adt-bundle轻松搭建Android开发环境与Hello world(Windows)

    Android开发环境有三种方式,分别是JDK+SDK+Eclipse+ADT.JDK+adt-bundle与JDK+Android Studio. 不要使用JDK+SDK+Eclipse+ADT这种方式,不是说什么太复杂的,是因为郭嘉的网络你懂的,打开SDK工具之后就根本就下载不了.Android Studio也是不行的,说好集合大量打开环境.安装的时候却还是需要联网. 建议使用JDK+adt-bundle这种方式来搭建Android开发环境.同时adt-bundle认准20131030版本.

  • 安装android开发环境原始版(windows版)

    一.下载需要用到的工具:(1)下载JAVA的IDE开发工具– Eclipse到Eclipse官方网站下载Ecplise For Java EE的最新Windows版本(2)下载Java开发包 - Java SE Development Kit (JDK) JDK 6到Sun官方网站下载JDK6,选择JDK 6 Update 12(3)下载Android开发包 - Android SDK到Google的官方网站下载Android的开发包For Windows的 二.下载完需要的工具之后,开始安装(

  • Android、iOS和Windows Phone中的推送技术详解

    推送并不是什么新技术,这种技术在互联网时代就已经很流行了.只是随着进入移动互联网时代,推送技术显得更加重要.因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示更多的信息(如图像.表格.声音等). 推送技术的实现通常会使用服务端向客户端推送消息的方式.也就是说客户端通过用户名.Key等ID注册到服务端后,在服务端就可以将消息向所有活动的客户端发送. 实际上,在很多移动操作系统中,官方都为其提供了推送方案,例如,Google的云推送.IOS.Windows

  • Android中的windowSoftInputMode属性详解

    在前面的一篇文章中,简单的介绍了一下如何实现软键盘不自动弹出,使用的方法是设置android:windowSoftInputMode属性.那么,这个属性到底是干什么的,他有什么作用呢?今天这篇文章,就是探索android:windowSoftInputMode属性的作用的. 首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的. android:windowSoftInputMode属性一共有9个取值,分别是: stateUnspecified,sta

  • Windows下搭建Android开发环境

    工具/原料 JDK Eclipse ADT JDK的安装和Java环境变量的设置 1.JDK下载地址     JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html     JDK(Java Development Kit)是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环境变量. 2.JAVA_HOME    JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用

  • Windows下获取Android 源码方法的详解

    前言:略!获取源码的原因千千万~~~ 1.安装GIT工具.GIT是林纳斯·托瓦兹大神为了管理器Linux内核开发而创立的分布式版本控制软件.下载地址:http://code.google.com/p/msysgit/一路next将安装进行到底. 2.在磁盘剩余空间较大的磁盘下新建一个文件夹,用于存放源码.我在F盘下:新建了androidsourcecode文件夹. 3.访问Android源码网站,获取你所需要的源码"下载链接".网站地址:http://android.git.kerne

  • 基于linux与windows平台下 如何下载android sdk源代码的方法详解

    本文主要分2部份.第1部份介绍如何下载android sdk的源代码:第2部份介绍如何把android sdk的源代码加入到eclipse里 第1部份如何下载android sdk的源代码 1.环境. Linux 2.6 ,Python 2.4.3 或windows XP 2.工具.主要使用git工具,下载android sdk source. (1)Linux下git工具可以到 http://git-scm.com/ 下载,此工具是linux的核心代码管理工具. 安装过程如下: tar -xv

  • Windows下React Native的Android环境部署及布局示例

    搭建基础环境 JDK(必须,不解释) SDK(建议使用Android Studio,集成SDK以及模拟器) genymotion(如果是使用真机或者Android Studio自带的模拟器,可以选择不装) NVM(node版本控制器,需要node4.0以上版本) 以上配置不是必须,可自行选择适合自己的环境,部分安装过程可能会涉及到翻墙,需要配置代理 配置踩坑记录 genymotion 这里选择genymotion模拟器来讲解,也会提一下Android Studio自带的模拟器的一些注意点,使用真

  • Windows下快速搭建安卓开发环境Android studio

    一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨在取代Eclipse和ADT(Android开发者工具)为开发者提供更好的开发工具.既然Google一直在努力推广,相信不久以后就有望赶上Eclipse. 相比Eclipse,Android Studio IDE有自己的特点: 对UI界面设计和编写代码有更好地支持,可以方便地调整设备上的多种分辨率.

  • WindowsAndroid 安装教程详解

    WindowsAndroid我们可以这样来称呼我们此次Win8中运行安卓系统的方法.这款软件是北京某公司刚刚研发出来的,比起BlueStacks,要简单的多,运行速度也快很多.安卓端拥有的应用日益增多,精品也越来越多,如果将其实现在Windows端将是异常令人兴奋的事情. WindowsAndroid安装 点击下一步之后,accept同意即可. 安装完毕之后,就可以运行桌面上绿色安卓小人图标了. 首先会弹出一个CMD命令行,不要理他,稍等几秒之后就会出现程序窗口了. 启动速度之快,真心让人惊讶啊

随机推荐