PHP 位运算操作字符串类型的数字产生的Bug

重点:在php中 字符(字符串)的位运算操作 是按照Ascii码值来进行计算的

在进行位运算时 如果 其中有一个为数字,则全部按照数字计算,如果都是字符串,则按照assic进行计算
如 “10”| 2 或者 “2” | 10
数字的位运算按照二进制操作

字符串的位运算规则如下
例如:
10|2 运算结果为 10
“10”|“2” 运算结果为:30
解析:
1. 将字符串"10"分割为两个字符 “1” 和 “0” ,转化为相应的Ascii码值分别为 49 和 48 则对应的二进制为 00110001 和 00110000
2. 将字符串"2" 转化为相应的Ascii码值为 50 则对应的二进制为 00110010
3. 因为ascii码以二进制8位一组 在进行运算时左对齐进行运算,后面不够的补0(00000000为字符串 null)
4. 相应计算如下
格式:二进制【Ascii->十进制】

字符串"10"00110001 【49->1】00110000【48->0】
字符串"10"00110010 【50->2】00000000【0->Null】
计算结果00110011【51->3】00110000【48->0】

计算出来的ascii值为 51 和 48 分别对应字符串 “3” 和“0”即为30

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值