2017-09-08 245 views
1

私はpowershellを使い始めています。私は文字列の各文字を取ってintに変換し、選択した数値を加えてそれをcharに戻したいと思います。"System.Object []"タイプの "System.Object []"値を "System.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

機能が単一の文字を取ることになっているあなたは、文字列全体を取ることができるにあなたの関数をしたい場合は、このような何かを行うことができます暗号化( "テスト")の代わりに暗号化( "t")します –

答えて

2

あなたは間違った方法であなたのパラメータを渡すmerleyです:

encrypt "t" 1 

作品。

Powershellは("t", 1)を1つのパラメータとして扱います。

パラメータを必須として指定していないため、powershellはパラメータを指定した順序を使用します。最初のパラメータgiveは変数$aを埋めるために使われます。あなたはまた、任意の順番で名前のパラメータを呼び出すことができます。

encrypt -key 5 -a a 
f 

またPowerShellは、それは常に単一の文字である必要があり、charとして文字列全体(例えば「テスト」)を解析することができません。これは、あなたが探しているものを提供しなければならない

function encrypt($word,$offset){ 
    foreach ($letter in $word.toCharArray()) { 
     $letter=[int]$letter+$offset; 
     $return = $return + [char]$letter 
    } 
    return $return 
} 

encrypt "test" 2 
vguv 
関連する問題