数字超过255的php chr()

时间:2012-07-06 06:15:39

标签: php

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

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

成功的。它会打印出每个ASCII值,但我注意到如果我使用值大于255的东西,就像这样:

chr(300);
只要它超过255,它就会从头开始重新开始。所以,我想知道是否有任何方法让php打印两个字符,如果它超过255(例如,当你使用数字300时它放置字符255后跟字符45)。这可能吗?如果是这样,我该怎么做?

3 个答案:

答案 0 :(得分: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);
?>

答案 1 :(得分: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"

答案 2 :(得分: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;
}

如果大于255,它只会为chr(255)添加一些模数值。对于什么?对于chr(255)前缀?