PHP——汉字完美转为ASCII码

前言

对接联通的接口,让我学会了不少PHP偏门函数....,主要对方用的py,我这用的PHP,人家一个函数解决了,

我这还要自己写方法,也是比较蛋疼,但是学到东西还是很开心的~

代码

字符串转为ASCII

/**
 * 字符串转为ASCII
 *
 * @param string $str 需要转换的字符串
 *
 * @return string $asc ASCII码
 */
function ascii_encode($str)
{
    $str = mb_convert_encoding($str, ‘GBK‘);
    $asc = ‘‘;
    for ($i = 0; $i < strlen($str); $i++) {
        $temp_str = dechex(ord($str[$i]));
        $asc .= $temp_str[0].$temp_str[1];
    }
    return strtoupper($asc);
}

ASCII转字符串

/**
 * ASCII转为字符串
 *
 * @param string $ascii ascii
 *
 * @return string $str 字符串
 */
function ascii_decode($sacii)
{
    $asc = str_split(strtolower($sacii), 2);
    $str =‘‘;
    for ($i = 0; $i < count($asc); $i++) {
        $str.= chr(hexdec($asc[$i][0].$asc[$i][1]));
    }
    return mb_convert_encoding($str, ‘UTF-8‘, ‘GBK‘);
}

还有事要忙,等晚上详细说下。

原文地址:https://www.cnblogs.com/wangyang0210/p/10912194.html

时间: 2024-10-17 04:50:52

PHP——汉字完美转为ASCII码的相关文章

8086汇编——作业总结1——ASCII码0~9转为8位二进制输出

思路: 将ASCII码转为数字->将数字的8位二进制一位一位转为ASCII输出 MOV AH,01H INT 21H  ;输入的ASCII存入AL ASCII码转为数字:SUB AL,30H 数字一位一位转为ASCII码:(加个循环) MOV DL,0 SAL AL,1 ;高位先输出,算数左移,高位移进CF ADC DL,30H ;全加,加CF位,结果‘0’或‘1’,即30H或31H,存入DL ;ASCII码7位 MOV AH,02H :输出的值存入DX INT 21H

HDOJ 2030 汉字统计(借此题来谈谈ASCII码与汉字机内码)

ASCII码与汉字机内码: 在做HDOJ 2030 汉字统计一题中在讨论区看到有楼主发帖说汉字的ASCII码值为负数.但书中的ASCII码的范围又是0-255(其中0--127是国际通用标准码,128--255是拓展码). 经过请教大牛与查阅资料得,汉字并没有ASCII码,汉字是又机内码表示的,即ansi编码,是系统根据当前地区然后确定的当地编码,例如大陆的ansi编码就代表 国标码GBK编码.各个地区之间的机内码是有差异的. 汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一

ecpilse中properties文件中文乱码问题,ASCII码

java项目中的properties类型的文件,多为配置文件.填写中文注释的时候,就会自动转为ascii码. 如果你文件>Properties>Text file encoding 改为UTF-8或者GBK还是不行的话,那只能安装properties插件了. 选择 Hepl> Eclipse Marketplat  eclipse市场,搜索properties,选择install,因为我安装过了,所以显示的是卸载按钮.安装完毕后要重启 安装前后对比图: 前: 后:

ASCII码从19968开始汉字--40870结束汉字

ASCII码从19968开始汉字--40870结束汉字 共有20902个汉字 中==20013 Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation.保留所有权利. C:\Users\Administrator>cd D:\day4 C:\Users\Administrator>D: D:\day4>javac BaseType.java 注: BaseType.java使用了未经检查或不安全的操作. 注:

汉字转16进制ASCII码

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestConsole { class Program { static void Main(string[] args) { byte[] b = ASCIIEncoding.Default.GetBytes("阿"); foreach (var s in b) { Console.WriteL

求中英文混合字符串长度,中英文混合字符串截取(汉字2个字节,字母数字等1个字节),字符转ASCII码

/// <summary> /// 求字符串的实际长度(汉字2个字节,外语字符1个字节) /// </summary> /// <param name="str"></param> /// <returns></returns> public static int Length(string str) { int len = 0; char[] arr = str.ToCharArray(); for (int i

还是编码 汉字(GB2312和GBK)的ASCII码对照表

GB2312和GBK每一个汉字由2个字节组成,这2个字节的ASCII码大小分别是:gb2312: high8 = 0xa1-->0xfe (161 - 254)low8 = 0xa1-->0xfe  (161 - 254)gbk: high8 = 0x80-->0xfe (128 - 254)low8 = 0x40-->0xfe (64 - 254) GB2312和GBK的区别:http://zhidao.baidu.com/question/40269499 汉字ASCII对照表

支持windows linux下将指定内存段转为16进制与ascii码的日志输出类

来源:http://blog.csdn.net/lezhiyong 1. 简介 将指定内存段转为16进制与asci码的输出到日志文件的类. 2. 功能介绍 1) 支持window与linus双系统. 2) 可指定输出目录. 3) 日志能输出的时间精确到毫秒,日志能输出线程号. 4) 提供字符串输出. 5) 提供指定内存转换为16进制输出. 6) 提供指定内存转换为16进制和ascii码同时输出. 7) 可调整16进制输出间距. 3. 原理和算法 1) 模块是基于C++语言编写: 2) 通过条件定

Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * 字符串 * @return ASCII字符串 */ public static String StringToAsciiString(String content) { String result = ""; int max = content.length(); for (int i = 0; i < max; i++) { char c