2 u010219986 u010219986 于 2014.03.28 10:05 提问

java 和C++之间用socket通信

我现在做的是java socket服务端,然后和c++那边通信,我不知道怎么接受c++发的数据,然后判断,经过判断再返回相应的数据,该怎么做?谢谢

1个回答

u013302967
u013302967   2014.03.28 11:29

1、big-endian与little-endian

Endian定义:在计算机系统体系结构中用来描述在多字节数中各个字节的存储顺序。

big-endian也称高位在前、大端在前。是计算机体系结构中一种描述多字节存储顺序的术语,在这种机制中最重要字节(MSB)存放在最低端的地址 上。采用这种机制的处理器有Mortolora PowerPC微处理器系列和绝大多数的 RISC处理器。

big-endian 最直观的字节序:

内存地址从左到右与值由低到高的顺序相对应。

little-endian也称低位在前、小端在前。计算机体系结构中一种描述多字节存储顺序的术语,在这种机 制中最不重要字节(LSB)存放在最低端的地 址上。采用这种机制的处理器有Intel x86系列微处理器和一些网络通信设备。该术语除了描述多字节存储顺序外还常常用来描述一个字节中各个比特的排放次序,这里仅讨论多字节存储循序。

little-endian是最符合人的思维的字节序,低与低,高与高一一对应:

地址低位存储值的低位

地址高位存储值的高位

 下面举一个例子具体说明big-endian与little-endian:

  int  nValue = 0x01020304;

  上面的整型nValue有4个字节,其中01为最高位的字节,04为最低位的字节。那么在内存(或文件)中,该值的存储循序为:

  内存(或文件)地址:0x12000001  0x12000002  0x12000003  0x12000004  

  Big-endian         :     01         02           03         04

  Little-endian        :     04         03           02         01



  如果用一个byte数组来保存的话,也就是如下:

  Big-endian模式下: byte  byValue[] = {0x01, 0x02, 0x03, 0x04};

  Little-endian模式下:byte  byValue[] = {0x04, 0x03, 0x02, 0x01};

Big-endian或是little-endian的判断:

bool IsLittleEndian()

{

   int   i      = 1;  

   char *p      = (char*)&i;  

if ( *p = 1 )

      return true;   // 小端 

else

return false; // 大端

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!