首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ByteArray中将小端点ByteArray转换为大端

在ByteArray中将小端点ByteArray转换为大端
EN

Stack Overflow用户
提问于 2011-06-11 10:40:04
回答 1查看 2.8K关注 0票数 0

如何将小终端ByteArray转换成AS3中的大端?我将bitmapData转换为大端ByteArray,然后使用Alchemy将其放入内存中.然后当我从记忆中读到它的时候,我得到了ByteArray。如何得到大结局。

我使用这个示例代码http://blog.debit.nl/2009/03/using-bytearrays-in-actionscript-and-alchemy/ (在Actionscript中直接访问C中的内存分配(FAST!!))

代码:

代码语言:javascript
复制
var ba:ByteArray = currentBitmapData.getPixels( currentBitmapData.rect );
ba.position = 0;

var ns:Namespace = new Namespace("cmodule.al_exam");
var data:ByteArray = (ns::gstate).ds; //point to memory

_dataPosition = lib.initByteArray(ba.length); //This is the position of the data in memory          
lib.writeData(ba); //example function to write data in C
data.position = _dataPosition; //reset position

// get noise, not image
bmd.setPixels(currentBitmapData.rect,data);
myBitmap.bitmapData = bmd;
EN

回答 1

Stack Overflow用户

发布于 2011-06-11 20:36:54

不久前,我在Adobe论坛上问过这个问题。

Flash本身是Little Endian,在Alchemy中运行的代码也是如此。由于不清楚的原因,许多Flash将字节作为大端返回。多奇怪啊。(也许这是从Macromedia时代遗留下来的API。谁知道?)

设置ByteArray.endian不会更改存储在ByteArray中的字节。它会影响readXXX/writeXXX的工作方式(也就是说,它们在读取/写入字节时会翻转字节)。

但是,由于炼金术代码直接查看字节(即不使用ByteArray方法),因此必须手动处理翻转。请注意,对于传入字节和传出字节也是如此。

关于翻转字节顺序的更多信息是这里

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6315417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档