PHP。按字节顺序遍历字符串。

时间:2012-01-17 09:47:56

标签: php encoding

看过Java的凯撒密码的getBytes()函数后,我正在考虑将这个功能克隆到PHP的可能性。

在Java中,函数是:

private static final SHIFT_LENGTH = 0x3;

public static String encode(String str) 
{
    str = "teststring";

    byte[] bytes = str.getBytes("UTF8");

    for (int i=0; i < bytes.length; ++i)
    {
        bytes[i] = bytes[i] + SHIFT_LENGTH;
    }

    // Base-64 encode
    return new BASE64Encoder().encode(bytes);
}

该函数应该为字符串中的每个字节添加三个,然后对其进行base-64编码。我在PHP中尝试过一些变体,如下所示:

function encode_php($str)
{
    $str = utf8_encode("teststring");

    $new_str = '';

    for ($i = 0; $i < strlen($str); $i++) {
        $new_str .= ord($str[$i])+3;
    }

    return base64_encode($new_str);
}

我显然在编码或如何处理PHP中的单个字节方面缺少一些东西,但我不确定是什么。我已经尝试使用dechex()和bin2hex()来混淆编码,但无法得到匹配的结果。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你的意思是$new_str .= chr((ord($str[$i])+3)%256);