2015-08-12 2 views
0

Я создал цикл, чтобы превратить десятичное число в двоичное число:/л цикла неспособности работать

SET /P InputNum="Input Number: " 

for /l %%x in (1, 1, 5) do (
    SET /A Output=%InputNum% %% 2 
    SET BinaryArray[%%x]=%Output% 
    SET /A InputNum /= 2 
) 

ECHO Binary Result: 
%BinaryArray[1]%%BinaryArray[2]%%BinaryArray[3]%%BinaryArray[4]%%BinaryArray[5]% 
PAUSE 

Это не работает, хотя. «Вывод» не назначается его значение, а это означает, что массив не заполняется, и даже «InputNum/= 2» по какой-то причине не работает. Выход «InputNum/= 2» вообще не работает.

У меня это работает в не форме:

SETLOCAL 
SET /P InputNum="Input Number: " 
SET /A Output1=%InputNum% %% 2 
ECHO Bit 1: %Output1% 

SET /A InputNum /= 2 
SET /A Output2=%InputNum% %% 2 
ECHO Bit 2: %Output2% 

SET /A InputNum /= 2 
SET /A Output3=%InputNum% %% 2 
ECHO Bit 3: %Output3% 

SET /A InputNum /= 2 
SET /A Output4=%InputNum% %% 2 
ECHO Bit 4: %Output4% 

SET /A InputNum /= 2 
SET /A Output5=%InputNum% %% 2 
ECHO Bit 5: %Output5% 

ECHO Binary Result: %Output1%%Output2%%Output3%%Output4%%Output5% 
ENDLOCAL 
PAUSE 

Но я не могу за жизнь мне получить его даже близко к функциональным внутри более изящным контуром. Я пропустил какой-то синтаксис, который я просто не понимаю?

ответ

1

вам нужно delayed expansion:

setlocal enableDelayedExpansion 
SET /P InputNum="Input Number: " 

for /l %%x in (1, 1, 5) do (
    SET /A Output=!InputNum! %% 2 
    SET BinaryArray[%%x]=!Output! 
    SET /A InputNum /= 2 
) 

ECHO Binary Result: 
%BinaryArray[1]%%BinaryArray[2]%%BinaryArray[3]%%BinaryArray[4]%%BinaryArray[5]% 
PAUSE 
Смежные вопросы