批处理中的Powershell。字符串转二进制,然后再转回来

问题描述 投票:0回答:1

在我的批处理文件中,我试图将一个字符串(%input%)转换为二进制,并将结果保存在一个批处理变量中。%varBinary%. 我的尝试。

for /f "delims=" %%a in ( ' powershell " [System.Text.Encoding]::UTF8.GetBytes(/"%_input%"/) | %{ [System.Convert]::ToString($_,2).PadLeft(8,'0') } " ' ) do set "varBinary=%%a"
echo.%varBinary%
echo."%varBinary%"
echo "%varBinary%"
echo %varBinary%

我的尝试: %varBinary% 始终是空的。这里有什么问题?还有如何把Binary转换回原来的字符串,这样就可以了?因为这也不行。

比如说 你好 应是 0110100001100101011011000110110001101111.

powershell batch-file binary
1个回答
2
投票

你很接近了,但你漏掉了几个需要转义的字符。

首先,powerhell(和大多数其他东西)使用了 \ 打引号,不 /. 二、分批、分质 % 需要通过使用 %% 而不是。(顺便说一句,你通常要逃过 |但在这里你不必这样做,因为它是在一个引号的字符串中。)

最后,如果你想构建字符串,而不仅仅是返回最后一个字符的二进制,你将不得不启用延迟扩展,并将输出的每一行连接起来。

@echo off
setlocal enabledelayedexpansion
set /p "_input=Input: "

for /f "delims=" %%A in ('powershell "[System.Text.Encoding]::UTF8.GetBytes(\"%_input%\") | %%{[System.Convert]::ToString($_,2).PadLeft(8,'0')}"') do set "varBinary=!varBinary!%%A"

echo.!varBinary!
echo."!varBinary!"
echo "!varBinary!"
echo !varBinary!
© www.soinside.com 2019 - 2024. All rights reserved.