$getInput = Read-Host "ASCII or Binary? `n"
$getInput = $getInput.toLower()
if($getInput -eq "ascii"){
""
#Write-Host "Type In Your ASCII" -backgroundcolor "black"
$getAscii = Read-Host "Type In Your ASCII`n"
""
""
$readAscii = @($getAscii)
[byte[]]$outBytes = $readAscii
}
elseif($getInput -eq "binary"){
}
else{
Write-Host "Wrong Input... [ASCII] or [BINARY]" -backgroundcolor "red" -foregroundcolor "white"
}
我希望能够获得用户段落或他们放入的任何字符串并将其转换为二进制。 [conver]::toString($getAscii,2)
仅适用于整数。
答案 0 :(得分:2)
试试这个
myList: Array<string> = ['.net', 'C#', 'web services'];
[system.Text.Encoding] :: Default.GetBytes($字符串)
这会将字符串转换为字节数组。您可以将默认值更改为另一个编码
| %{[System.Convert] :: ToString($ _,2).PadLeft(8,&#39; 0&#39;)}
这会将字节数组中的每个字节转换为二进制表示形式。 ToString([object],[Enum]),在这种情况下,如果转换为字符串,则字节将具有类似于65的数字值2将说明将65转换为基数2.您还可以使用8(octo),10(其中与无名称基数10)和16(十六进制)相同。然后它填充左边,直到它的8个字符长,用char 0&#39>
答案 1 :(得分:1)
'hello world' -split '' | % {
if ($_ -ne '') {
#[int][char]$_
[System.Convert]::ToString(([int][char]$_),2)
}
}
答案 2 :(得分:0)
我建议使用与此用户类似的编码库:
$stringToConvert = "Hello World"
$test = [System.Text.Encoding]::UTF8.GetBytes($stringToConvert) | %{ [System.Convert]::ToString($_,2).PadLeft(8,'0') }
$test
来源:https://www.reddit.com/r/PowerShell/comments/3e82vk/convert_string_to_binary_and_back/
*注意:我相信这种方法的原始海报旨在为第二次转换分配$ foo。我相信它会以任何方式工作,因为返回将被转储到下面的变量。