我刚刚开始使用PowerShell,我正在制作一个非常简单的加密功能。我想将每个字符串放入一个字符串中,将其转换为int并添加一个选定的数字,然后将其转换回char。
这很好用:
function encrypt($a){
$letter=[int][char]$a
$letter=$letter+1;
return [char]$letter
}
encrypt("test)
但这不是:
function encrypt($a, $key){
$letter=[int][char]$a
$letter=$letter+$key;
return [char]$letter
}
encrypt("test", 1)
它给了我标题中的错误..我错过了什么?
答案 0 :(得分:2)
你是以正确的方式传递你的参数:
encrypt "t" 1
作品。
Powershell会将("t", 1)
视为单个参数。
由于您尚未将任何参数指定为必需参数,因此powershell将仅使用您提供参数的顺序。因此,第一个参数给出用于填充变量$a
。您还可以按任何顺序调用名称参数:
encrypt -key 5 -a a
f
此外,powershell无法解析整个字符串(例如" test")作为字符,它总是需要是一个字符。如果你希望你的函数能够获取整个字符串,你可以这样做:
function encrypt($word,$offset){
foreach ($letter in $word.toCharArray()) {
$letter=[int]$letter+$offset;
$return = $return + [char]$letter
}
return $return
}
这应该提供你想要的东西:
encrypt "test" 2
vguv