首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex Base64decoding问题

Flex Base64decoding问题
EN

Stack Overflow用户
提问于 2011-02-04 01:16:21
回答 3查看 1.1K关注 0票数 1

我正在解码一个base64string,我需要在窗口中显示解码后的内容。但是当我打印出来的时候,我只能得到bytearrayObject,而不是数据。

如何获取数据?

代码语言:javascript
复制
    private function copyByteArray(content:String):void{

        try{

            byteData = new ByteArray();
            //byteData.writeUTFBytes(contents);
            var dec:Base64Decoder = new Base64Decoder();
            dec.decode(content);

           byteData.writeBytes(dec.toByteArray());


            Alert.show("byte Array   " + byteData+" ::  " +contents.length + "::");
}
catch (ex: ErrorEvent){
        Alert.show("error");

    }

}

EN

回答 3

Stack Overflow用户

发布于 2011-02-04 01:47:25

我非常确定在将其附加到字符串值时,它会隐式地为您调用toString。不幸的是,toStrings往往毫无价值。

您可能只需要遍历数组并读取数据,执行类似以下操作:

代码语言:javascript
复制
byteData.position=0;
var tempString:String = byteData.readUTFBytes(byteData.bytesAvailable);
Alert.show(tempString);

有关从ByteArray读取数据的其他选项,请参阅此处的参考:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html

请验证您是否将字节数组的位置重置为0,这似乎对我有效(编码为"test“,然后解码并在弹出窗口中正确显示,不确定还需要什么?):

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout="vertical"
                minWidth="955"
                minHeight="600">

    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.utils.Base64Decoder;

            protected function button2_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                copyByteArray("dGVzdA==");

            }
            private function copyByteArray(content:String):void{

                try{

                    var byteData:ByteArray = new ByteArray();
                    //byteData.writeUTFBytes(contents);
                    var dec:Base64Decoder = new Base64Decoder();
                    dec.decode(content);

                    byteData.writeBytes(dec.toByteArray());
                    byteData.position=0;

                    Alert.show("byte Array   " + byteData.readUTFBytes(byteData.bytesAvailable)+" ::  " +content.length + "::");
                }
                catch (ex: ErrorEvent){
                    Alert.show("error");

                }
            }

        ]]>
    </mx:Script>
    <mx:Button label="Test Byte Array" click="button2_clickHandler(event)"/>
</mx:Application>
票数 1
EN

Stack Overflow用户

发布于 2011-02-04 01:47:43

我试过了,在警报中得到了一个字符串,而不是byteArray对象。顺便说一下,您应该使用类Error (或继承类)的变量,而不是任何事件。

票数 0
EN

Stack Overflow用户

发布于 2011-02-04 01:48:24

尝试如下所示:

代码语言:javascript
复制
var bytes:ByteArray = new ByteArray();
var bDecoder : Base64Decoder = new Base64Decoder();
bDecoder.decode(urlModifiedString);
bytes = bDecoder.toByteArray() ;

bytes.position = 0;

var returnObj : * = bytes.readObject();

发帖后,我看到了别人的readUTFBytes……如果你想序列化和反序列化任何类型的对象...与上面的内容一起滚动。

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

https://stackoverflow.com/questions/4889336

复制
相关文章

相似问题

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