Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Powershell中获取字符串的二进制值_Powershell_Powershell 2.0 - Fatal编程技术网

在Powershell中获取字符串的二进制值

在Powershell中获取字符串的二进制值,powershell,powershell-2.0,Powershell,Powershell 2.0,我希望能够得到一个用户段落或任何他们输入的字符串,并将其转换为二进制。[conver]::toString($getAscii,2)仅适用于整数 我建议使用与此用户类似的编码库: $getInput = Read-Host "ASCII or Binary? `n" $getInput = $getInput.toLower() if($getInput -eq "ascii"){ "" #Write-Host "Type In Your ASCII" -backgroun

我希望能够得到一个用户段落或任何他们输入的字符串,并将其转换为二进制。
[conver]::toString($getAscii,2)
仅适用于整数

我建议使用与此用户类似的编码库:

$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"
}
资料来源:

*注:我相信这种方法的原始海报旨在将$foo分配给第二次转换。我相信这两种方法都可以,因为返回值将转储到下面的变量。

试试这个

$stringToConvert = "Hello World"

    $test = [System.Text.Encoding]::UTF8.GetBytes($stringToConvert) | %{ [System.Convert]::ToString($_,2).PadLeft(8,'0') }

    $test
[system.Text.Encoding]::Default.GetBytes($String)

这会将字符串转换为字节数组。您可以将默认值更改为其他编码

|%{[System.Convert]::ToString($\u0,2).padlefit(8,'0')}

这会将字节数组中的每个字节转换为二进制表示形式。 ToString([object],[Enum]),在这种情况下,字节将有一个类似于65的数值,如果转换为字符串,则2将表示将65转换为基数2。您还可以使用8(八进制)、10(与无相同,即10进制)和16(十六进制)。然后用字符0填充左边的字符,直到其长度为8个字符

$string = "ABCDEF"
[system.Text.Encoding]::Default.GetBytes($String) | %{[System.Convert]::ToString($_,2).PadLeft(8,'0') }
  • 使用拆分运算符按每个字符拆分字符串
  • 通过管道将其发送到foreach对象循环
  • 拆分操作最终在字符串中包含空格字符 因此,条件确保我们不会对它采取行动——我们过滤掉它
  • 注释行用于测试目的。每个字符都有一个 [string]的类型,我们需要它作为[char],所以我们显式地强制转换它 因此,PowerShell引擎会为我们动态切换它(如图所示) 只要可以)。在同一行中,我们显式地将[char]强制转换为 获取ASCII->十进制表示形式的[int]。这次测试只是为了 确保我得到了正确的输出,并在 警察想看看
  • 最后,我们使用System.Convert类的ToString()方法,该类接受“base” 参数来定义我们希望的base2(二进制)表示形式 位置1中提供的整数,类型为[string]

  • 一个字符或整个字符串?最好是字符串,所以
    hello world
    应该是
    011010011001011001101100 011011011111 00100000011101111 011011011110010 011011001100 011001001001010
    我看到了这篇帖子,我只是不确定它是否适用。是的,这是可行的,我只是测试了它:例如,Hello返回您正在查找的内容-只需设置一个变量来替换当前字符串“Hello”(或一个参数)您应该开始使用一种简单的转换方法。我已经修改了解决方案,以完全执行您想要的操作:请在powershell中测试它,您将看到它执行您想要的操作。
    默认值
    可以更改为任何字符编码?是的,可以。只需删除并替换
    'hello world' -split '' | % {
        if ($_ -ne '') {
            #[int][char]$_
            [System.Convert]::ToString(([int][char]$_),2)
        }
    }