php - 将十进制 ASCII 转换为 ASCII 字符的 PHP 函数

标签 php ascii

我完全不知所措,试图转换一个十进制字符串,而不是 oct,只是简单的十进制,它的字符数会有所不同,变成纯文本。

字符串看起来像: 495051979899100 (123abcd)

如果我有办法预测字符串将包含什么,我可以整天使用 chr(),但我真的没有,所以我该怎么办?

最佳答案

从某种意义上说,您的问题是模棱两可的,即在没有任何假设的情况下,输入字符串可能会导致所有满足约束的输出字符串呈指数级增长。

我们假设,对于 ASCII,您指的是 ascii 的可读(而非控制部分)。因此任何有效的 ascii 值都在 32128 之间。因此,您知道如果前两个字符代表一个值,严格小于 32,它将在 100+ 范围内。

你的算法应该同时做两件事:

  • 读出前两个字符。
  • 如果该值小于 32 那么该值在 100+ 范围内所以读取三个字符并转换,如果不是则在 >-100 范围,sou 转换两个字符。

或者在 PHP 中:

$s = "495051979899100";
$n = strlen($s);
$result = "";
for ($x=0; $x<=$n; $x += 2) {
    $temp = intval(substr($s,$x,2));
    if($temp < 32) {
        $temp = intval(substr($s,$x,3));
        if($temp > 128) {
            die "Assumption error";
        }
        $x++;
    }
    $result .= chr($temp);
}
echo $result;

关于php - 将十进制 ASCII 转换为 ASCII 字符的 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26174979/

相关文章:

php - 如何用php返回整个mysql表?

php - 这些 Laravel 查询绑定(bind)不起作用

c# - 将 ASCII 编码为 HTML

c++ - 在 C++ 中将特殊 ASCII 字符转换为 XML 兼容字符串

Python 将 html ascii 编码的文本转换为 utf8

php - 匹配单个字符后跟数字并以 'c' 结尾的正则表达式

php - mysql MAX() 返回 0 而不是实际值

powershell - 如何将 ASCII Art 输出到控制台?

java - Guava CharMatcher - 扩展 ASCII 定义

php - 从$_SESSION获取用户名