0

我一直在使用 phpchr()函数,我想通过使用从 1 开始的变量打印每个字符,打印 ASCII 值,然后递增它,然后重复此操作。这就是我所做的:

<?php
$i = 0;
while($i<255)
{
    echo chr($i)."\n";
    $i++;
}
?>

这成功地起作用了。它打印出每个 ASCII 值,但我注意到,如果我使用值超过 255 的值,如下所示:

chr(300);

一旦超过 255,它就会从头开始。所以,我想知道如果超过 255,是否有办法让 php 打印两个字符(例如,当你使用数字 300 时,它会将字符 255 后跟字符 45)。这可能吗?如果是这样,我会怎么做?

4

3 回答 3

1

干得好。它是无限循环,毫无意义,但它应该可以工作。

<?php
$i = 0;
$string = '';

do
{
    if($i<255) {
      echo $string . chr($i)."\n";
      $i++;
    } else {
      $string .= chr(255);
      $i = 0;
    }
}
while($i<255);
?>

这里是循环的限制:

<?php
$i = 0;
$j = 0;
$limit = 255*4;

$string = '';

do
{
    $j++;
    if($i<255) {
      echo $string . chr($i)."\n";
      $i++;
    } else {
      $string .= chr(255);
      $i = 0;
    }
}
while($i<255 && $j<$limit);
?>
于 2012-07-06T06:29:43.973 回答
1

只是为了好玩,这是一个递归解决方案:

<?php

function char($i, $max = 255) {
    if ($i > $max) {
        return char($max, $max) . char($i-$max, $max);
    }
    return chr($i);
}

echo char(365, 66);
echo "\n";
echo char(1365, 122);
echo "\n";

不要提供第二个参数以默认为 255。

示例输出:

BBBBB#
yyyyyyyyyyy"
于 2012-07-06T06:40:06.853 回答
0

这基本上就是您要寻找的东西(但这没有任何意义):

$char = (int) X;

输入变量。它是一个整数。你想做某事直到,所以我们while循环:

while ($char >= 0) {

虽然$char大于或等于零,但有事可做。如果它低于 255,我们输出它并打破循环:

    if ($char < 256) {
        echo chr($char);
        break;
    }

美好的。现在是疯狂的部分。因为它可以大于 256,所以我们只输出:

    echo chr(255);

总是?是的,总是。当我们输出它时,我们从值中减去它

    $char -= 256;

然后我们再试一次循环:

}

如您所见,这根本没有意义:

$char = (int) X;
while ($char >= 0) {
    if ($char < 256) {
        echo chr($char);
        break;
    }
    echo chr(255);
    $char -= 256;
}

chr(255)如果大于 255 ,它只会在某个模值前面加上前缀。为什么?用于chr(255)前缀?

于 2012-07-06T08:52:15.857 回答