2017-09-08 127 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)作爲單一參數處理。

由於您尚未將任何參數指定爲強制參數,因此powershell將僅使用您提供參數的順序。因此,第一個參數給出用於填充變量$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 
相關問題