2012-01-17 11 views
0

シーザー暗号のJavaのgetBytes()関数を見て、私はこの機能をPHPにクローン化する可能性について考えています。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); 
} 

関数は、文字列内の各バイトまでの3を添加した後、ベース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

あなたは$new_str .= chr((ord($str[$i])+3)%256);

+0

1を意味しない:私は、$ new_str' 'の出力は、ASCII数字の文字列である賭けます。 ;-) – Herbert

+0

ああ、そうです。はい。ありがとうございました! – NChase

関連する問題