PHP请补充代码编写函数f($str,$n)将字符串$str中所有字母按ASCII规则循环左移$n位加密,非字母不变,如参数: str:["1A2b3Y4z"], n:[3] 则输出为: 1A2b3Y4z循环左移3位,结果为1X2y3V4w

P粉514965422
P粉514965422
2024-11-27 20浏览

摘要:
本函数将字符串中所有字母按照 ASCII 规则循环左移指定位数。非字母字符保持不变。

函数实现:

function f($str, $n) {
    $encrypted = "";
    for ($i = 0; $i < strlen($str); $i++) {
        $char = $str[$i];
        if (ctype_alpha($char)) {
            $ascii = ord($char);
            $offset = $n % 26;
            $encrypted .= chr(($ascii - $offset) % 123);
        } else {
            $encrypted .= $char;
        }
    }
    return $encrypted;
}

测试用例:

$str = "1A2b3Y4z";
$n = 3;
echo f($str, $n); // 输出:1X2y3V4w

总结:

本函数通过遍历字符串、判断字符类型并利用 ASCII 规则进行偏移计算,实现字符串字母循环左移加密。非字母字符不被加密,保持原样输出。

php中文网 免责声明:以上内容除特别注明外均来源于网友提问,php中文网回答,权益归原著者所有;