Actionscript 3 air sdk 3.5上的com.hurlant.util.hex语法错误

Actionscript 3 air sdk 3.5上的com.hurlant.util.hex语法错误,actionscript-3,flash,mobile,air,Actionscript 3,Flash,Mobile,Air,我有一个用旧版本的FlexSDK编写和编译的应用程序。现在我必须将这个应用程序移植到移动设备上运行,所以我将sdk更改为AIRSDK3.5。我正在使用hurlant库进行加密/解密。在十六进制类中有一行抛出错误 if (hex.length&1==1) hex="0"+hex; 我不知道(十六进制长度&1==1)是什么意思。 那么,我应该如何更换线路,或者有其他解决方案吗?您将同时需要flex和air 在我看来像是个打字错误 if(hex.length==1)hex=“0”+h

我有一个用旧版本的FlexSDK编写和编译的应用程序。现在我必须将这个应用程序移植到移动设备上运行,所以我将sdk更改为AIRSDK3.5。我正在使用hurlant库进行加密/解密。在十六进制类中有一行抛出错误

    if (hex.length&1==1) hex="0"+hex;
我不知道(十六进制长度&1==1)是什么意思。
那么,我应该如何更换线路,或者有其他解决方案吗?

您将同时需要flex和air
在我看来像是个打字错误

if(hex.length==1)hex=“0”+hex

取决于if语句应该查找的内容

编辑我的坏消息
我不知道那个算符,我会用一个模来做的

我向你高超的技能致敬。

你将同时需要弹性和空气
在我看来像是个打字错误

if(hex.length==1)hex=“0”+hex

取决于if语句应该查找的内容

编辑我的坏消息
我不知道那个算符,我会用一个模来做的
我向你的高超技能致敬。

如果(十六进制长度&1==1)
表示检查十六进制长度是否为奇数(1,3,5,7…)

请参阅下文:

var str:String = "111";

if(str.length&1==1)
{
   str = "0" + str;

   trace(str);
}
你的语法没有问题。我敢肯定。显示什么样的错误

我有一个
Hex.as
。但不会发生任何语法错误。在Flash Builder 4.6中,Flash CS6 AIR3.5

package com.hurlant.util
{
    import flash.utils.ByteArray;

    public class Hex
    {
        /**
         * Support straight hex, or colon-laced hex.
         * (that means 23:03:0e:f0, but *NOT* 23:3:e:f0)
         * Whitespace characters are ignored.
         */
        public static function toArray(hex:String):ByteArray {
            hex = hex.replace(/\s|:/gm,'');
            var a:ByteArray = new ByteArray;
            if (hex.length&1==1) hex="0"+hex;
            for (var i:uint=0;i<hex.length;i+=2) {
                a[i/2] = parseInt(hex.substr(i,2),16);
            }
            return a;
        }

        public static function fromArray(array:ByteArray, colons:Boolean=false):String {
            var s:String = "";
            for (var i:uint=0;i<array.length;i++) {
                s+=("0"+array[i].toString(16)).substr(-2,2);
                if (colons) {
                    if (i<array.length-1) s+=":";
                }
            }
            return s;
        }

        /**
         * 
         * @param hex
         * @return a UTF-8 string decoded from hex
         * 
         */
        public static function toString(hex:String):String {
            var a:ByteArray = toArray(hex);
            return a.readUTFBytes(a.length);
        }


        /**
         * 
         * @param str
         * @return a hex string encoded from the UTF-8 string str
         * 
         */
        public static function fromString(str:String, colons:Boolean=false):String {
            var a:ByteArray = new ByteArray;
            a.writeUTFBytes(str);
            return fromArray(a, colons);
        }

    }
}
package com.hurlant.util
{
导入flash.utils.ByteArray;
公共类十六进制
{
/**
*支撑直六角或带冒号的六角。
*(这意味着23:03:0e:f0,但不是*23:3:e:f0)
*将忽略空白字符。
*/
公共静态函数toArray(十六进制:字符串):ByteArray{
十六进制=十六进制。替换(/\s |:/gm,);
变量a:ByteArray=新ByteArray;
如果(十六进制长度&1==1)十六进制=“0”+十六进制;
for(var i:uint=0;i
if(hex.length&1==1)
表示检查hex.length是否为奇数(1,3,5,7…)

请参阅下文:

var str:String = "111";

if(str.length&1==1)
{
   str = "0" + str;

   trace(str);
}
你的语法没有问题。我肯定。你会看到什么样的错误

我有一个
Hex.as
。但是没有出现任何语法错误。在Flash Builder 4.6中,Flash CS6 AIR3.5

package com.hurlant.util
{
    import flash.utils.ByteArray;

    public class Hex
    {
        /**
         * Support straight hex, or colon-laced hex.
         * (that means 23:03:0e:f0, but *NOT* 23:3:e:f0)
         * Whitespace characters are ignored.
         */
        public static function toArray(hex:String):ByteArray {
            hex = hex.replace(/\s|:/gm,'');
            var a:ByteArray = new ByteArray;
            if (hex.length&1==1) hex="0"+hex;
            for (var i:uint=0;i<hex.length;i+=2) {
                a[i/2] = parseInt(hex.substr(i,2),16);
            }
            return a;
        }

        public static function fromArray(array:ByteArray, colons:Boolean=false):String {
            var s:String = "";
            for (var i:uint=0;i<array.length;i++) {
                s+=("0"+array[i].toString(16)).substr(-2,2);
                if (colons) {
                    if (i<array.length-1) s+=":";
                }
            }
            return s;
        }

        /**
         * 
         * @param hex
         * @return a UTF-8 string decoded from hex
         * 
         */
        public static function toString(hex:String):String {
            var a:ByteArray = toArray(hex);
            return a.readUTFBytes(a.length);
        }


        /**
         * 
         * @param str
         * @return a hex string encoded from the UTF-8 string str
         * 
         */
        public static function fromString(str:String, colons:Boolean=false):String {
            var a:ByteArray = new ByteArray;
            a.writeUTFBytes(str);
            return fromArray(a, colons);
        }

    }
}
package com.hurlant.util
{
导入flash.utils.ByteArray;
公共类十六进制
{
/**
*支撑直六角或带冒号的六角。
*(这意味着23:03:0e:f0,但不是*23:3:e:f0)
*将忽略空白字符。
*/
公共静态函数toArray(十六进制:字符串):ByteArray{
十六进制=十六进制。替换(/\s |:/gm,);
变量a:ByteArray=新ByteArray;
如果(十六进制长度&1==1)十六进制=“0”+十六进制;

对于(var i:uint=0;i我也看到了这个错误,它发生在使用Flash Builder 4.7的新ASC2.0编译器编译时

如果(hex.length&1==1)hex=“0”+hex;
进入


这就解决了这个问题。

我也看到过这个错误,当您使用Flash Builder 4.7的新ASC2.0编译器进行编译时,就会发生这种错误

如果(hex.length&1==1)hex=“0”+hex;
进入

这就解决了问题