1

在以下代码中:

var benq:Base64Encoder = new Base64Encoder();
benq.encode("force",0,5);
var tmp:String = benq.toString();

'tmp' 结果是一个空字符串,即长度为 0。为什么?如何使用 base64encoder 对字符串进行编码?

4

3 回答 3

3

你确定你的代码不工作。我只是将它复制并粘贴到一个测试应用程序中,它返回 tmp 为 'Zm9yY2U='

你对 var tmp 做了什么别的吗?如果调试确保它在检查输出时已处理 var tmp:String.... 行

<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    verticalAlign="middle"
    backgroundColor="white"
    creationComplete="but1.label = encodeit()">

<mx:Script>
    <![CDATA[
        import mx.utils.Base64Encoder;

        private function encodeit(): String {
            var benq:Base64Encoder = new Base64Encoder();
            benq.encode("force",0,5);
            var tmp:String = benq.toString();
            return tmp;
        }
    ]]>
</mx:Script>

<mx:Button 
    id="but1" 
    width="100"
    height="100"
    /></mx:Application>
于 2009-01-14T12:41:30.140 回答
0

您是否使用 Flex 3,因为它似乎是一项新功能?还可以尝试使用 encodeBytes 和使用 encodeUTFBytes 编码成字节数组,也许这些效果更好。

Adobe提供了在线参考,但我想你知道这一点。

于 2009-01-14T12:31:25.590 回答
0

好的,它正在工作。我发布的代码与我实际使用的代码不同。我跳过了为 Base64Encoder 调用 toString() 会清除其内部缓冲区的事实。因此,下次调用它会返回一个空字符串。抱歉,添麻烦了。

于 2009-01-14T13:06:11.997 回答