威尼斯www.9778.com-威尼斯正版官方网站

PHP中把有符号整型转换为无符号整型方法

日期:2020-02-06编辑作者:编程人生

在一个短地址项目中,根据六位字符与ID的相互映射的算法,当ID超过2147483647的时候,六位字符的短地址映射的ID变成有符号的整型。

在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢?

复制代码 代码如下:
ID        >     六位字符    >映射ID   

有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数。
数值范围从 -2^31 - 2^31-1 即 -2147483648 到 2147483647。

ID: 2147483644 > TfffVQ > 2147483644
ID: 2147483645 > efffVQ > 2147483645
ID: 2147483646 > NfffVQ > 2147483646
ID: 2147483647 > ffffVQ > 2147483647
ID: 2147483648 > nnnnnu > -2147483648
ID: 2147483649 > dnnnnu > -2147483647
ID: 2147483650 > rnnnnu > -2147483646

JavaScript 进行位操作时,是采用32位 有符号 整型,这意味着其转换的结果也是32位有符号整型。 有些时候,我们进行移位会出现意想不到的结果,以下是C语言 与 JS 的对比。

需要把有符号整型转换为无符号整型:(float) sprintf('%u', $id)

C语言

PHP官网关于整型的资料:

复制代码 代码如下:

unsigned int a = 3774191835u;
unsigned int b = a >> 2;
/* b == 943547958 */

JavaScript

复制代码 代码如下:

var a = 3774191835;
var b = a >> 2;
/* b == -130193866 */

可以看到,JavaScript 进行位运算时,是采用的有符号整型,故我们得到了不一样的结果。 怎么解决呢?

我们可以把JavaScript 中的有符号数,转换成无符号数。只需要进行 >>>0 移位操作就好了。

最好不要使用 >> ,推荐使用 >>> 因为最左边一位会被解析成符号位,当数字溢出时,会被解析成负数。

JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢? 有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号...

本文由威尼斯www.9778.com发布于编程人生,转载请注明出处:PHP中把有符号整型转换为无符号整型方法

关键词:

PHP ajax 异步执行不等待执行结果的处理方法

短地址生成应用中,要根据长地址生成网页快照,这个生成时间非瞬发,不可预估。 获取网页快照并生成缩略图可分...

详细>>

浅谈 JS 创建对象的 8 种模式

Object.create() 是什么? Object.create(proto [, propertiesObject ]State of Qatar是E5中提出的后生可畏种新的指标创制格局,第叁个参...

详细>>

jquery $(document).ready() 与window.onload的区别

1.执行时间   Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的...

详细>>

jquery加载页面的方法(页面加载完成就执行)威尼斯正版官方网站

window.onload = function() { $("table tr:nth-child(even)").addClass("even"); //这个是jquery代码 }; // 任何需要执行的js特效  $("table tr:...

详细>>