我完全不知所措,试图转换一个十进制字符串,而不是 oct,只是简单的十进制,它的字符数会有所不同,变成纯文本。
字符串看起来像: 495051979899100 (123abcd)
如果我有办法预测字符串将包含什么,我可以整天使用 chr(),但我真的没有,所以我该怎么办?
最佳答案
从某种意义上说,您的问题是模棱两可的,即在没有任何假设的情况下,输入字符串可能会导致所有满足约束的输出字符串呈指数级增长。
我们假设,对于 ASCII,您指的是 ascii 的可读(而非控制部分)。因此任何有效的 ascii 值都在 32
和 128
之间。因此,您知道如果前两个字符代表一个值,严格小于 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/