Синтаксическая ошибка com.hurlant.util.hex в эфире SDK 3.5
У меня есть приложение, написанное и скомпилированное со старой версией flex sdk. Теперь я должен портировать это приложение для запуска на мобильных устройствах, поэтому я изменил SDK на Air SDK 3.5. Я использую библиотеку Hurlant для шифрования / дешифрования. но на шестнадцатеричном классе есть строка, которая выдает ошибку.
if (hex.length&1==1) hex="0"+hex;
Я не знаю, что означает (hex.length&1==1). Итак, как я должен изменить линию или есть какие-то другие решения для этой проблемы?
3 ответа
Я тоже видел эту ошибку, это происходит, когда вы компилируете с новым ASC2.0 компилятором Flash Builder 4.7.
Я изменился if (hex.length&1==1) hex="0"+hex;
в
if ((hex.length&1)==1) hex="0"+hex;
и это исправило.
Вам понадобится и гибкость, и воздух!
выглядит как опечатка для меня..
if (hex.length==1) hex="0"+hex;
в зависимости от того, что, если заявление должно искать
РЕДАКТИРОВАТЬ МОЙ Плохой
Я не знал об этом операторе, я бы сделал это с модулем!
Я преклоняюсь перед твоими превосходными навыками.
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);
}
}
}