`
wangshaofei
  • 浏览: 282358 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

php中ASCⅡ码

    博客分类:
  • php
阅读更多
<?php
class ascii
{

function decode ( $str )
{
     preg_match_all ( " /(d{2,5})/ " , $str , $a ) ;
     $a = $a [ 0 ] ;
     foreach ( $a as $dec )
     {
         if ( $dec < 128 )
         {
             $utf .= chr ( $dec ) ;
         }
         else if ( $dec < 2048 )
        {
             $utf .= chr ( 192 + (( $dec - ( $dec % 64 )) / 64 )) ;
             $utf .= chr ( 128 + ( $dec % 64 )) ;
         }
         else
         {
             $utf .= chr ( 224 + (( $dec - ( $dec % 4096 )) / 4096 )) ;
             $utf .= chr ( 128 + ((( $dec % 4096 ) - ( $dec % 64 )) / 64 )) ;
             $utf .= chr ( 128 + ( $dec % 64 )) ;
         }
     }
     return $utf ;
}

function encode ( $c )
{
     $len = strlen ( $c ) ;
     $a = 0 ;
     while ( $a < $len )
     {
         $ud = 0 ;
         if ( ord ( $c { $a }) >= 0 && ord ( $c { $a }) <= 127 )
         {
             $ud = ord ( $c { $a }) ;
             $a += 1 ;
         }
         else if ( ord ( $c { $a }) >= 192 && ord ( $c { $a }) <= 223 )
         {
             $ud = ( ord ( $c { $a }) - 192 ) * 64 + ( ord ( $c { $a + 1 }) - 128 ) ;
             $a += 2 ;
         }
         else if ( ord ( $c { $a }) >= 224 && ord ( $c { $a }) <= 239 )
         {
             $ud = ( ord ( $c { $a }) - 224 ) * 4096 + ( ord ( $c { $a + 1 }) - 128 ) * 64 + ( ord ( $c { $a + 2 }) - 128 ) ;
             $a += 3 ;
         }
         else if ( ord ( $c { $a }) >= 240 && ord ( $c { $a }) <= 247 )
         {
             $ud = ( ord ( $c { $a }) - 240 ) * 262144 + ( ord ( $c { $a + 1 }) - 128 ) * 4096 + ( ord ( $c { $a + 2 }) - 128 ) * 64 + ( ord ( $c { $a + 3 }) - 128 ) ;
             $a += 4 ;
         }
         else if ( ord ( $c { $a }) >= 248 && ord ( $c { $a }) <= 251 )
         {
             $ud = ( ord ( $c { $a }) - 248 ) * 16777216 + ( ord ( $c { $a + 1 }) - 128 ) * 262144 + ( ord ( $c { $a + 2 }) - 128 ) * 4096 + ( ord ( $c { $a + 3 }) - 128 ) * 64 + ( ord ( $c { $a + 4 }) - 128 ) ;
             $a += 5 ;
         }
         else if ( ord ( $c { $a }) >= 252 && ord ( $c { $a }) <= 253 )
         {
             $ud = ( ord ( $c { $a }) - 252 ) * 1073741824 + ( ord ( $c { $a + 1 }) - 128 ) * 16777216 + ( ord ( $c { $a + 2 }) - 128 ) * 262144 + ( ord ( $c { $a + 3 }) - 128 ) * 4096 + ( ord ( $c { $a + 4 }) - 128 ) * 64 + ( ord ( $c { $a + 5 }) - 128 ) ;
             $a += 6 ;
         }
         else if ( ord ( $c { $a }) >= 254 && ord ( $c { $a }) <= 255 )
         { //error
             $ud = false ;
         }
         $scill .= " &# $ud ; " ;
     }
     return $scill ;
}

最近在技术群中有位兄弟提出了一个问题:

想让自增的ID格式化为

A001——A999

B001——B999

……

Z001——Z999,

我最初的构思是循环中,分if条件判断出来进行A——Z字母,

但是这样做有个极大的缺点,代码显得很呆板冗余,26个英文字母等于需要26个判断。

后来有人支招将字母变成ASCⅡ码,恰好A——Z等于ASCⅡ码的65——91;

这样就只需要一个函数进行格式化ID就可以了:
    function format_string( $num ) {
         $tag = floor (( $num - 1 ) / 999 );
         // part1计算asc码
         $part1 = 65 + $tag ;

         // part2计算数字部分
         $part2 = $num - 999 * $tag ;

         $a = strlen ( $part2 );

         for ( $i = 0 ; $i < ( 3 - $a ); $i ++ )
         {
          $b .= 0 ;
         }
         $str = chr ( $part1 ) . $b . $part2 ;
         return $str ;
     }

     for ( $i = 1 ; $i < 5000 ; $i ++ )
     {
          echo     $str = format_string( $i ) . ' <br /> ' ;
     }

 

1
1
分享到:
评论

相关推荐

    ASCⅡ码表.htm

    ASCⅡ码表.htm

    char java c# 用的asc ASCⅡ码

    例如,在 Java 中,String 类的每个对象都可以被视为一个 ASC Ⅱ 码的字符串,而在 C# 中,String 类型的变量也可以被视为一个 ASC Ⅱ 码的字符串。 此外,ASC Ⅱ 码也被用于许多其他领域,例如: * 数据库管理...

    ASCⅡ码

    ASCⅡ码,即“美国信息交换标准代码”,是一种被广泛应用于计算机系统中的字符编码标准。它由美国国家标准局(ANSI)制定,并被国际标准化组织(ISO)采纳为国际标准(ISO 646)。ASCⅡ码主要适用于拉丁文字字母,...

    ASCⅡ码 _码表 _ 查询

    供专业人士性学习ASCⅡ码用,使用非常方便,一点即可看。

    em78二进制数转换为ASCⅡ码_em78二进制数转换为ASCⅡ码_

    在IT领域,特别是编程和数据处理中,二进制数转换至ASCⅡ码是一项基本技能。ASCⅡ(American Standard Code for Information Interchange,美国信息交换标准代码)是一种广泛使用的字符编码系统,它将字符与7位或8位...

    ASCⅡ+Unicode编码

    在UTF-8编码中,ASCⅡ字符依然使用1字节表示,但非ASCⅡ字符则可能需要2、3或4字节来编码,取决于字符的码点。这样做的好处是,大多数网页和文本文件都以UTF-8编码,因为它可以在不改变ASCⅡ字符编码的情况下支持更...

    中文与asc码unicode码互转

    例如,将中文字符转换为ASC码,首先要确定该字符在Unicode中的位置,然后根据Unicode到ASC码的映射关系进行转换。由于ASC码只支持128个字符,所以中文字符无法直接转换为有效的ASC码表示,通常会用两个或四个ASC码...

    WINDOWS STOP错误代码解释&系统文件详解&ASCⅡ码表

    3. **ASCⅡ码表**:ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示西方语言。ASCII码表包括128个字符,从0到127,每个字符都...

    asc.rar_ASC_ASC码_asc在线转换_asc字符转换_asc码转换为十

    通常,这样的文本文件会提供一些实例,帮助用户理解ASC码如何转换成十进制或十六进制,以及如何在实际应用中操作。 另一个子文件"asc"可能是ASC码转换的程序本身,可能是源代码或者一个可执行文件。如果是源代码,...

    LED显示屏系统中ASCⅡ码和汉字字库的处理 (2012年)

    本文主要介绍LED显示屏系统中对ASCⅡ码和汉字字库的处理,从而论述一种新的思想和算法在LED显示屏系统对ASCⅡ码和汉字字库处理。本设计通过一次性嵌入全部或者部分的ASCⅡ码和汉字字库,从而克服了传统的通过输入一...

    十六进制转换成ASC码

    两者之间的转换是非常有必要的,因为在计算机编程中,经常需要将十六进制数转换为ASC码,或者将ASC码转换为十六进制数。 下面是十六进制转换成ASC码的知识点: 1. 什么是十六进制? 十六进制是一种基于16进制数的...

    所有asc ii 码的总结

    标题中的“所有asc ii 码的总结”表明我们要探讨的是ASCII码,这是一个广泛使用的字符编码标准,特别是在计算机科学和编程领域。ASCII(American Standard Code for Information Interchange,美国信息交换标准代码...

    python自学:字符转ASCⅡ码

    python自学练习小程序 GUI编程 tkinter模块

    ASC码查询表

    ASC码查询表。对ASC码不熟悉的同学,可以作为临时参考文档哦

    asc码查询工具

    软件名称:asc码查询工具 功能:输入一个字符,本软件可以帮你显示出asc码,在下面的编辑框,很小很实用哟。

    ASC码对照表

    详细的ASC码对照表,含16.10.8进制

    ASC II码对照表

    随着计算机技术的发展,尽管已经出现了扩展的ASC II码如ISO-8859-1和Unicode,但原始的ASC II码仍广泛应用于各种场景中,尤其是在英文文档处理上。 #### 二、ASC II码对照表解析 ASC II码对照表展示了从0到127的...

    十六进制转换成asc码

    十六进制转换讲内部的20h单元的十六进制数转换成asc码,并存入相应的单元

    asc码对照表

    从给定的文件信息来看,虽然标题和描述都是“asc码对照表”,但实际上内容与之无关,而是关于Java EE(J2EE)架构、组件、规范以及开发过程的详细描述。下面,我们将从这些信息中提炼出关键的IT知识点。 ### Java ...

Global site tag (gtag.js) - Google Analytics