首页 php教程 php手册 php bcd码压缩-把十进制数字压缩到十六进制数据中

php bcd码压缩-把十进制数字压缩到十六进制数据中

May 25, 2016 pm 04:50 PM
十进制 压缩 数字

下面我们一起来看和篇关于php bcd码压缩-把十进制数字压缩到十六进制数据中实例,希望文章给各位同学带来帮助哦。

例,php bcd码压缩-把十进制数字压缩到十六进制数据中,代码如下:

<?php
/*
php bcd码压缩-把十进制数字压缩到十六进制数据中  
例如 0091 压缩后 0x00 0x91  
*/
$string = &#39;0091&#39;;
$bytes = Bytes::getBytes($string);
print_r($bytes);
/*
Array  
(  
 
[0] => 48  
 
[1] => 48  
 
[2] => 57  
 
[3] => 49  
)  
*/
$asc = Bytes::AscToHex($bytes, 4);
//4位压缩成2位
print_r($asc);
/*
Array  
(  
 
[0] => 0  
 
[1] => 145  
)  
*/
echo Bytes::toStr($asc);
/*
0091  
*/
$hex = Bytes::HexToAsc($asc, 2);
//反操作2位还原成4位
print_r($hex);
/*
Array  
(  
 
[0] => 48  
 
[1] => 48  
 
[2] => 57  
 
[3] => 49  
)  
*/
?>
登录后复制

例,把十进制数字压缩到十六进制数据中,代码如下:

<?php
/**  
 * php bcd码压缩
 * 把十进制数字压缩到十六进制数据中
 * @author phpff.com
 * Created on 2011-7-15
 */
class Bytes {
    /**  
     * 转换一个String字符串为byte数组
     * @param $str 需要转换的字符串
     * @param $bytes 目标byte数组
     * @author phpff.com
     */
    public static function getBytes($string) {
        $bytes = array();
        for ($i = 0; $i < strlen($string); $i++) {
            $bytes[] = ord($string[$i]);
        }
        return $bytes;
    }
    /**  
     * 将字节数组转化为String类型的数据
     * @param $bytes 字节数组
     * @param $str 目标字符串
     * @return 一个String类型的数据
     */
    public static function toStr($bytes) {
        $str = &#39;&#39;;
        foreach ($bytes as $ch) {
            $str.= bin2hex(chr($ch));
        }
        return $str;
    }
    /**  
     * asc码转成16进制数据
     * @param $asc asc数字字符串
     * @param $AscLen 需要转换的字符串长度
     * @return 16进制数组
     * @author  phpff.com
     */
    public static function AscToHex($asc, $AscLen) {
        $i = 0;
        $Hex = array();
        for ($i = 0; 2 * $i < $AscLen; $i++) {
            /*A:0x41(0100 0001),a:0x61(0110 0001),右移4位后都是0001,加0x90等0xa*/
            $Hex[$i] = (chr($asc[2 * $i]) << 4);
            if (!(chr($asc[2 * $i]) >= &#39;0&#39; && chr($asc[2 * $i]) <= &#39;9&#39;)) {
                $Hex[$i]+= 0x90;
            }
            if (2 * $i + 1 >= $AscLen) {
                break;
            }
            $Hex[$i]|= (chr($asc[2 * $i + 1]) & 0x0f);
            if (!(chr($asc[2 * $i + 1]) >= &#39;0&#39; && chr($asc[2 * $i + 1]) <= &#39;9&#39;)) {
                $Hex[$i]+= 0x09;
            }
        }
        return $Hex;
    }
    /**  
     * 将16进制的数据转换成asc码
     * @param $Hex 16进制数组
     * @param $HexLen 16进制数组长度
     * @return asc数组
     * @author  phpff.com
     */
    public static function HexToAsc($Hex, $HexLen) {
        $i = 0;
        $Temp = 0;
        for ($i = 0; $i < $HexLen; $i++) {
            $Temp = ($Hex[$i] & 0xf0) >> 4;
            if ($Temp < 10) {
                $Asc[2 * $i] = (0x30 + $Temp);
            } else {
                $Asc[2 * $i] = (0x37 + $Temp);
            }
            $Temp = $Hex[$i] & 0x0f;
            if ($Temp < 10) {
                $Asc[2 * $i + 1] = (0x30 + $Temp);
            } else {
                $Asc[2 * $i + 1] = (0x37 + $Temp);
            }
        }
        return $Asc;
    }
}
登录后复制


教程地址:

欢迎转载!但请带上文章地址^^

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
两个点博物馆:所有展览以及在哪里可以找到它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在 Windows 11 上启用或禁用内存压缩功能 如何在 Windows 11 上启用或禁用内存压缩功能 Sep 19, 2023 pm 11:33 PM

使用Windows11上的内存压缩,即使RAM量有限,您的设备也会窒息运行。在本文中,我们将向您展示如何在Windows11上启用或禁用内存压缩。什么是内存压缩?内存压缩是一种在将数据写入RAM之前压缩数据的功能,从而在其上提供更多存储空间。当然,存储在物理内存中的更多数据转化为更快的系统运行和更好的整体性能。此功能在Windows11中默认启用,但如果它以某种方式未处于活动状态,您可以禁用或重新启用它。如何在Windows11中启用内存压缩?单击搜索栏,键入powershell,然后从结果中单

7-zip最大压缩率设置,7zip如何压缩到最小 7-zip最大压缩率设置,7zip如何压缩到最小 Jun 18, 2024 pm 06:12 PM

发现某下载网站下载的压缩包,解压后再打包会比原来的压缩包大一些,小的几十Kb的差别,大的几十Mb的差别,如果上传到云盘或付费空间,文件少无所谓,文件多的话,大大的增加储存成本。特意研究了下,有需要的可以借鉴。压缩等级:9-极限压缩字典大小:256或384,字典越压缩越慢,256MB之前压缩率差别较大,384MB后压缩率无差别单词大小:最大273参数:f=BCJ2,测试加参数压缩率会高一些

减小win10录屏文件大小的建议 减小win10录屏文件大小的建议 Jan 04, 2024 pm 12:05 PM

许多的小伙伴都需要录屏进行办公或者传输文件,但是有时候会出现文件过大的问题制造了很多麻烦,下面就给大家带来了文件过大的解决方法,一起看看吧。win10录屏文件太大怎么办:1、下载软件格式工厂来进行压缩文件。下载地址>>2、进入主页面,点击“视频-MP4”选项。3、在转换格式页面中点击“添加文件”,选择要压缩的MP4文件。4、点击页面“输出配置”,通过输出质量来压缩文件。5、下拉配置列表选择“低质量和大小”点击“确定”。6、点击“确定”完成视频文件的导入。7、点击“开始”进行转化。8、完成后即可

找出在范围内不可被任何数整除的数字,使用C++ 找出在范围内不可被任何数整除的数字,使用C++ Sep 13, 2023 pm 09:21 PM

在本文中,我们将讨论查找1到n(给定)之间的数字的问题,这些数字不能被2到10之间的任何数字整除。让我们通过一些例子来理解这一点-Input:num=14Output:3Explanation:Therearethreenumbers,1,11,and13,whicharenotdivisible.Input:num=21Output:5Explanation:Therearefivenumbers1,11,13,17,and19,whicharenotdivisible.求解的方法简单方法如果

wps怎么压缩文件夹打包发送 wps怎么压缩文件夹打包发送 Mar 20, 2024 pm 12:58 PM

办公人员在工作中使用wps软件进行操作的频率特别地多,有时一天会输入多个文件,然后发送给领导或发送到指定位置,那么wps软件如何压缩文件夹打包发送呢,下面小编就教大家这个操作步骤。首先,将要发送的文件和文件夹整理到同一个文件夹中。如果有很多文件,最好对每个文件进行命名,这样在发送时更易识别。  第二步,这个时候单击这个大的文件夹,然后点击鼠标右键。选择“添加到压缩文件”。  第三步,这个时候软件会自动帮我们打包我们的文件,选项“压缩到XX.zip”,这个zip就是打包的格式,然后点击立即压缩。 

如何正确理解 Linux 中打包和压缩的不同之处 如何正确理解 Linux 中打包和压缩的不同之处 Feb 20, 2024 pm 05:33 PM

Linux中打包和压缩是经常用到的操作,但许多用户往往混淆这两者的概念。本文将详细讨论在Linux系统中打包和压缩的不同之处,并通过具体的代码示例来帮助读者更好地理解。首先,需要明确打包和压缩的区别。打包是将多个文件或目录组合成一个单独的文件,通常用于整理、归档或传输文件。而压缩是将一个或多个文件通过算法进行压缩,以减小文件的大小,节省存储空间或加快传输速

winrar 64位-winrar怎么解压? winrar 64位-winrar怎么解压? Mar 18, 2024 pm 12:55 PM

WinRAR是一款功能强大的压缩文件管理工具,提供了丰富的功能和易于使用的界面。WinRAR64位版本特别针对64位操作系统进行了优化,能够更好地利用系统资源和性能。接下来就让小编为大家介绍一下winrar64位以及解答一下winrar怎么解压吧!一、winrar64位是什么软件WinRAR是一款功能强大的压缩包管理器。这款软件可用于备份您的数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它文件,并且可以新建RAR及ZIP格式的文件。目前最新WINRAR版本为Wi

Centos 7 压缩解压命令概览 Centos 7 压缩解压命令概览 Dec 31, 2023 pm 09:02 PM

1.zip文件压缩语法:zip加压缩后的文件名加要压缩的文件名。[root@localhost~]#ziptest.ziptest.txtadding:test.txt(deflated100%)[root@localhost~]#后面出现进度条百分比数字说明已经压缩好了然后你在ll验证一下看看有没有你命名的文件包。[root@localhost~]#ll总用量820004-rw-------.1rootroot15873月2216:58anaconda-ks.cfg-rw-r--r--.1ro

See all articles