as3将7位十六进制值转换为int或uint

时间:2014-04-22 17:42:30

标签: actionscript-3 hex

我有一个7位十六进制值,如此

id =“0x04 0xDD 0x02 0x82 0x43 0x2F 0x84”

我需要在actionscript

中将其转换为正确的uint值

首先我删除前导'0x'和空格,留下我

id =“04DD0282432F84”

那么只是使用内置的parseInt方法吗?

我的uint值= parseInt(id,radix);

如何确定第二个基数应该是什么?

1 个答案:

答案 0 :(得分:1)

不,不幸的是,并非那么简单。

你应该注意的几个关注点:

  1. " 7位" (7字节)十六进制值对于AS3 uint来说太大了。 uint仅支持32位值,与您类似的值将需要7字节* 8位/字节= 56位。偶数Number只能处理多达53位的整数。您需要将其存储在一对uint中,或以不同的方式解决问题。

  2. 由于您分别接收十六进制字节,因此它们看起来更像是字节序列而不是数字。你确定他们的字节顺序吗?有许多不同的方法可以将数值存储为一系列字节。有些人把较高的价值放在开头,有些放在最后,有些甚至比这更复杂。

  3. 最终,一旦你确定你有正确的字节顺序,你将不得不从前3-4个字节中拆分前3-4个字节,并将每个字节分成单独的uint,然后跟踪哪一个代表数字的大部分,哪个代表数字的较小部分。根据您需要对值进行的操作,这可能会使其他事情变得更加复杂(即,如果您需要使用数字进行数学运算)。

    如果你真的需要走这条路,你可能想要使用任意大小的#34;整数实现,如下所示:

    http://as3asclublib.googlecode.com/svn-history/r29/trunk/data/BigInt.as