0

在检查登录页面时,我发现了以下 JS 代码

hexMD5('\232' + document.login.password.value + '\305\334\122\134\352');

所以,我在问\352它会占用一个字节并因此导致溢出和产量96或 java 脚本解释器促进它short以保持其价值?

4

1 回答 1

1

JavaScript 没有字节、短整数或整数*,它只有Numbertype,它是一个双精度 IEEE-754 数字。但这与您显示的代码并不真正相关,除非charCodeAt在字符串上使用某些东西来获取其中一个字符的相应代码点,因为您在字符串中定义代码点(松散地,“字符”),不是数字。JavaScript 中的字符是 16 位实体,因此八进制转义'\352'编码字符 234 十进制,这显然很容易适应字符的 16 位范围。

旁注:八进制转义不是主要标准的一部分,在严格模式下是不允许的。它们是规范的非规范性附件的一部分。我建议使用十六进制转义或 unicode 转义而不是八进制转义。

* 好吧,在一些与位相关的计算中,JavaScript 确实有 32 位整数作为暂时的东西,例如由&and|运算符执行的计算。

于 2013-04-20T09:04:48.623 回答