我正在解码base64string我需要在窗口中显示解码的内容。 但是当我打印时,我只得到了bytearrayObject而不是数据。
如何获取数据?
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");
}
}
答案 0 :(得分:1)
我很确定在将它附加到字符串值时会隐式调用toString,但不幸的是toStrings往往毫无价值。
您可能需要单步执行数组并读入数据,执行以下操作:
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”然后解码并在弹出窗口中正确显示,不确定还有什么预期?):
<?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 :(得分:0)
我试过它并在Alert中得到一个字符串,而不是byteArray对象。顺便说一下,你应该使用类Error(或继承类)的变量,而不是任何事件。
答案 2 :(得分:-1)
尝试这样的事情:
var bytes:ByteArray = new ByteArray();
var bDecoder : Base64Decoder = new Base64Decoder();
bDecoder.decode(urlModifiedString);
bytes = bDecoder.toByteArray() ;
bytes.position = 0;
var returnObj : * = bytes.readObject();
发布后我刚刚看到别人的readUTFBytes ...如果你想序列化和反序列化任何类型的对象...滚动以上。