AS3与.net之间的Socket编码转换的endian问题

2024-02-05 21:58

本文主要是介绍AS3与.net之间的Socket编码转换的endian问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前一直都是用.net,最近项目需要在C#和AS3之间建立socket通信,于是就研究了一下AS3的socket。用起来的时候,发现AS3的socket与C#的socket用法差别较大。但是这些都还说得过去,可是一个endian却是把我恶心了一番。

    由于对字符编码了解不多,我在试用AS3的socket的函数writeInt()的时候,C#端接收到的数字总是跟flash端发送的值不一致。我调试时发现同一个整数,flash端将其转换成的字节数组跟C#将其转换成的字节数组是刚好相反。曾经动了手动反转字节数组的念头,可是觉得AS3的socket也不该弱到这种地步吧,于是上网查找,可惜,搜索编码转换相关的一系列的关键字,很少见到讲AS3和.net互发数字的内容,都是在讲字符串怎么发的。

 

     横下心来,对AS3的socket对象一个属性一个属性的研究,发现了endian这个属性。再次搜索endian,拨云见日,终于被我发现了编码集中的正序、反序这个概念。网上讲了很多,这里不再一一列举。总而言之言而总之,就是编码时的字节数组的顺序有正反两种情况。风传是跟CPU有关,但是这个我们就不用关心了。

 

知道了这个,那就好办了,AS3中可以通过如下代码控制字节数组中的数据的写入或读出方式:

//client为外部声明的AS3 Socket对象 var arrBytes:ByteArray = new ByteArray(); client.readBytes(arrBytes);

//读取前设置endian client.endian=Endian.LITTLE_ENDIAN; //client.endian=Endian.BIG_ENDIAN; var i:int = arrBytes.readInt();

//每次读取都可以设置此次读取的endian

client.endian=Endian.LITTLE_ENDIAN;

var d:int = arrBytes.readInt();

 

 

       AS3的Socket的endian有两个值:LITTLE_ENDIAN,一个

BIG_ENDIAN,默认是BIG_ENDIAN。问题就出在C#端如果跑的是Intel的cpu

(通常都是),C#的BitConverter是LITTLE_ENDIAN。所以,在我把flash

端设置成LITTLE_ENDIAN后,AS3和.net之间终于可以正常的发送信息了。

 

至于C#端的代码,十分简单,不想花费时间再次发明轮子,这里就从略了。

这篇关于AS3与.net之间的Socket编码转换的endian问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682289

相关文章

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)