在我的批处理文件中,我试图将一个字符串(%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.
你很接近了,但你漏掉了几个需要转义的字符。
首先,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!