c 和java程序通信_Java与C通信要注意的几个问题

1.大尾(big_endian)小尾(little_endian)的问题

基于Web的测试软件是由C++数据采集服务器程序和客户端Java显示程序两部分构成,前者用C++,后者Java语言,存在数据移植问题。因为

在计算机系统中,当包含数字的二进制文件从一个结构移到另一结构时,就出现大尾小尾问题。不同CPU在多字节数(如四字节int)存储时有两种方法,一种

方法叫小尾(little_endian),数据的低字节被放置在连续存储区的首位,另一种方法叫大尾(big_endian),数据的高字节被放置在连

续存储区的首位。Intel 80×86家族处理器是最后一个仍然坚持小尾的主要结构。所有其他的CPU结构(Motorola

680×0和所有RISC芯片)或者是纯粹的大尾或者是既适应大尾也适应小尾,大尾被认为是更符合逻辑的方法)。当数字由小尾处理器写入文件然后又由大尾

处理器读取(或者倒过来)时,数字就会被搞乱(除了0和-1)。

目前在笔者参与的项目中平台中心的GM

Server是C语言实现的,而我们这边的GM

client为Java实现的,自然需要考虑这个通信时的大小尾转换,主要涉及short,int,long类型,String,byte类型不需要转

换.

2.类型字节大小的问题

C语言中的基本类型如下:

类型

定义

说明

BYTE

typedef

unsigned char BYTE

单字节

WORD

typedef

unsigned short WORD

双字节无符号整数

SWORD

typedef

signed short SWORD

双字节符号整数

DWORD

typedef

unsigned int DWORD

四字节无符号整数

SDWORD

typedef

signed int SDWORD

四字节符号整数

Java的八种基本数据类型如下:

byte     1字节

short

2字节

int         4字节

long

8字节 (C语言中是4字节)

char     2字节(C语言中是1字节)

float

4字节

double  8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值