PHP 字符串 与 Java byte[] 类型 相互转换

前言

1、因为byte占8个bit位.int占32个bit位,将int转成byte相当与强制截取int的二进制数的后8位,由于多余的部分byte空间装不下,因此干掉多余部分,取其后8位b位 转成10进制的值就是结果,
2、如果截下来的8位数的第一位(从左往右,术语叫做高位)是1,表示此数是负数,那么最终的结果就是 把这8位先转为十进制数然后再减去256就是最终的值
3、相反如果高位是0,代表正数,那么直接把这8位转为十进制数就是这个byte货色的结果

#!php字符串类型转换成byte[]

function getBytes($string) {  
    $bytes = array();  
    for($i = 0; $i < strlen($string); $i++){    //遍历每一个字符 用ord函数把它们拼接成一个php数组
         $bytes[] = ord($string[$i]);  
    }  
    return $bytes;  
}

#! java byte[]类型转换成php字符串类型

function toStr($bytes) {  
    $str = "";  
    foreach($bytes as $ch) {  
        $str .= chr($ch);    //这里用chr函数
    }  
    return $str;  
}

#! php数值类型转换成byte[]

function toByte($num) //$num 可以传数字
{
    $num=decbin($num);  //decbin 是php自带的函数,可以把十进制数字转换为二进制

    $num=substr($num,-8); //取后8位
    $sign=substr($num,0,1); //截取 第一位 也就是高位,用来判断到底是负的还是正的
    if($sign==1)  //高位是1 代表是负数 ,则要减去256
    {
        return bindec($num)-256; //bindec 也是php自带的函数,可以把二进制数转为十进制
    }
    else
    {
        return bindec($num);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值