Dav*_*noh 0 flash actionscript-3
我有一个十六进制数: 0x01F4
我需要一个人的补充 - 应该是FE0B.但我似乎无法得到我需要的东西.
我做:
var n:int = 0xF4;
n = ~n;
trace(n.toString(16));
而-F5不是0B.
谁知道我能做什么?
一个补码适用于所有位.在Flash中,int是32位(或8个十六进制数字).所以,~0x01F4是0xFFFFFE0B(因为0x01F4是0x000001F4).如果你只需要最后2个字节的价值,只需在以下后面做一个掩码:~n & 0xFFFF.
你得到-F5输出的原因int是签名类型 - 所以无论何时设置最高位(就像你的例子一样),Flash都认为它是负2的补码并给你输出.这些位是正确的,但格式化的表示是意料之外的,因为你没有问你认为你是什么.将类型更改为uint,输出应该变为(预期的)FFFFFE0B.
| 归档时间: | 
 | 
| 查看次数: | 64 次 | 
| 最近记录: |