ActionScript 3.0 通信中问题总结

1. 关于字节序的问题:

在ActionScript下默认的字节序都为BIG_ENDIAN, 也就是传说中的大字节序。

        字节序:
       简言之,大字节序:也就是高位在高地址内存处,低位在低地址内存处。
                      小字节序: 与大字节序相反,低位存储在低地址内存处,高位存储在高地址内存处。
 
       例如: int k = 256;  
          VC下为小字节序,即LITTLE_ENDIAN 它在VC下内存中按如下格式存储:00 01 00 00 也即低位在低地址内存处。高位在高地址内存处。
          AS下一切的数据结构和数据类型默认为大字节序,所以在AS中k的存储方式如下:00 00 01 00


       因此在VC和AS之间进行通信的时候需要进行字节序的转换。

       网络字节序为高端字节序。AS与网络字节序相同,网络字节序一般认为是标准字节序。

2. 关于汉字的传输:

       在VC下,字符串多数时候使用的为 MultiByte类型。与其相对有一个Unicode类型,也就是现在通用的编码类型。在编码汉字的时候,他们有一个区别,也就是:MultiByte类型编码,将一个汉字编码成为两个字节;而Unicode编码类型,将一个汉字编码为3个字节。

       在AS下可以读取MultiByte类型数据,也可以读取Unicode类型数据。在与VC进行通信的时候,需要注意发送端发送的编码类型。

       使用AS的Socket通信时需要注意:使用ByteArray存储接受和发送的数据时,有两个函数可以将汉字转化为字节。
       socket.writeMultiByte( value:String, codeType:String); //第二个参数为编码的类型有gb2312、hz-gb-2312等

       socket.writeUTFBytes( value:String);  //  它默认的是使用Unicode编码方式(UTF-8)

       我的应用为:
       服务器(VC)发送中文,使用默认的编码方式,也就是MultiByte。如char str[] = "郭";
       客户端(AS)接受中文,使用readMultiByte();函数,编码方式使用的"gb2312"
       通信正常。

       注:使用readUTFByte();函数读取则是乱码,因为它读取了三个字节。导致其后的数据读取也出现错误。

 

By Andy 2012-07-21 23:06

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值