Bash shell Преобразование десятичной в двоичную базу 2

С помощью Spring 4 вы добавляете @EnableWebMvc, например:

@Controller
@EnableWebMvc
@RequestMapping(value = "/articles/action", headers="Accept=*/*",  produces="application/json")
public class ArticlesController {

}
29
задан Ciro Santilli 新疆改造中心996ICU六四事件 19 September 2018 в 12:06
поделиться

5 ответов

Вы можете использовать bc как:

echo "obase=2;$ip1" | bc

См.

55
ответ дан codaddict 19 September 2018 в 12:06
поделиться

Преобразование десятичного числа в двоичное с помощью встроенных команд bash (от 0 до 255):

D2B=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})

echo ${D2B[7]}

00000111

echo ${D2B[85]}

01010101

echo ${D2B[127]}

01111111


Для удаления начальных нулей, например из ${D2B[7]}:

echo $((10#${D2B[7]}))

111


Это создает массив с 00000000 00000001 00000010 ... 11111101 11111110 11111111 с расширением bash‘s . Позиция в массиве D2B представляет ее десятичное значение.

См. Также: Понимание кода ({0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0 ..1} {0..1})

30
ответ дан Cyrus 19 September 2018 в 12:06
поделиться

Общий метод для преобразования целого числа в другое представление с другим основанием (но основание < = 10 из-за использования только цифр 0..9 для представления):

function convertIntvalToBase () # (Val Base)
{
   val=$1
   base=$2
   result=""
   while [ $val -ne 0 ] ; do
        result=$(( $val % $base ))$result #residual is next digit
        val=$(( $val / $base ))
   done
   echo -n $result
}

, например

convertIntvalToBase $ip1 2     # converts $ip1 into binary representation
3
ответ дан Jörg Weilbier 19 September 2018 в 12:06
поделиться

Преобразование десятичных чисел в двоичные в Bash:

Я использую Ubuntu 14.04 для этого.

Преобразование десятичных чисел от 1 до 5 в двоичную форму.

el@apollo:~$ bc <<< "obase=2;1"
1
el@apollo:~$ bc <<< "obase=2;2"
10
el@apollo:~$ bc <<< "obase=2;3"
11
el@apollo:~$ bc <<< "obase=2;4"
100
el@apollo:~$ bc <<< "obase=2;5"
101

Бонусный пример:

el@apollo:~$ bc <<< "obase=2;1024"
10000000000

el@apollo:~$ bc <<< "obase=2;2^128"
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
2
ответ дан Eric Leschinski 19 September 2018 в 12:06
поделиться

Десятичное в двоичное с использованием только Bash

Любое целое число может быть преобразовано в двоичное с использованием его ::

touch dec2bin.bash && chmod +x "

Десятичное в двоичное с использованием только Bash

Любое целое число может быть преобразовано в двоичное с использованием его ::

[110]

И затем скопируйте следующее:

#!/bin/bash
num=$1;
dec2bin()
{
    op=2; ## Since we're converting to binary
    quo=$(( $num/ $op)); ## quotient
    rem=$(( $num% $op)); ## remainder
    array=(); ## array for putting remainder inside array
    array+=("$rem"); ## array expansion
        until [[ $quo -eq 0 ]]; do
            num=$quo; ## looping to get all remainder, untill the remainder is 0
            quo=$(( $num / $op));
            rem=$(( $num % $op));
            array+="$rem"; ## array expansion
        done
    binary=$(echo "${array[@]}" | rev); ## reversing array
    printf "$binary\n"; ## print array
}
main()
{
[[ -n ${num//[0-9]/} ]] &&
    { printf "$num is not an integer bruv!\n"; return 1;
    } || { dec2bin $num; }
}
main;

Например:

./dec2bin.bash $var
110100100

Необходимо добавить целое число !!

./dec2bin.bash 420.py
420.py is not an integer bruv!

Кроме того, еще один способ с использованием Python: много медленнее

python -c "print(bin(420))"
0b110100100

От шестнадцатеричного к двоичному с использованием только Bash

Аналогично, от шестнадцатеричного к двоичному, как следует с использованием только Bash:

#!/usr/local/bin/bash ## For Darwin :( higher bash :)
#!/bin/bash ## Linux :)
hex=$1;
hex2bin()
{
    op=2; num=$((16#$hex));
    quo=$(( $num/ $op));
    rem=$(( $num% $op));
    array=();
    array+=("$rem");
        until [[ $quo -eq 0 ]]; do
            num=$quo;
            quo=$(( $num / $op));
            rem=$(( $num % $op));
            array+="$rem";
        done
    binary=$(echo "${array[@]}" | rev);
    printf "Binary of $1 is: $binary\n";
}
main()
{
[[ -n ${hex//[0-9,A-F,a-f]/} ]] &&
    { printf "$hex is not a hexa decimal number bruv!\n"; return 1;
    } || { hex2bin $hex; }
}
main;

Для Пример:

./hex2bin.bash 1aF
Binary of 1aF is: 110101111

Шестнадцатеричное должно быть передано:

./hex2bin.bash XyZ
XyZ is not a hexa decimal number bruv!
" && vim "

Десятичное в двоичное с использованием только Bash

Любое целое число может быть преобразовано в двоичное с использованием его ::

[110]

И затем скопируйте следующее:

#!/bin/bash
num=$1;
dec2bin()
{
    op=2; ## Since we're converting to binary
    quo=$(( $num/ $op)); ## quotient
    rem=$(( $num% $op)); ## remainder
    array=(); ## array for putting remainder inside array
    array+=("$rem"); ## array expansion
        until [[ $quo -eq 0 ]]; do
            num=$quo; ## looping to get all remainder, untill the remainder is 0
            quo=$(( $num / $op));
            rem=$(( $num % $op));
            array+="$rem"; ## array expansion
        done
    binary=$(echo "${array[@]}" | rev); ## reversing array
    printf "$binary\n"; ## print array
}
main()
{
[[ -n ${num//[0-9]/} ]] &&
    { printf "$num is not an integer bruv!\n"; return 1;
    } || { dec2bin $num; }
}
main;

Например:

./dec2bin.bash $var
110100100

Необходимо добавить целое число !!

./dec2bin.bash 420.py
420.py is not an integer bruv!

Кроме того, еще один способ с использованием Python: много медленнее

python -c "print(bin(420))"
0b110100100

От шестнадцатеричного к двоичному с использованием только Bash

Аналогично, от шестнадцатеричного к двоичному, как следует с использованием только Bash:

#!/usr/local/bin/bash ## For Darwin :( higher bash :)
#!/bin/bash ## Linux :)
hex=$1;
hex2bin()
{
    op=2; num=$((16#$hex));
    quo=$(( $num/ $op));
    rem=$(( $num% $op));
    array=();
    array+=("$rem");
        until [[ $quo -eq 0 ]]; do
            num=$quo;
            quo=$(( $num / $op));
            rem=$(( $num % $op));
            array+="$rem";
        done
    binary=$(echo "${array[@]}" | rev);
    printf "Binary of $1 is: $binary\n";
}
main()
{
[[ -n ${hex//[0-9,A-F,a-f]/} ]] &&
    { printf "$hex is not a hexa decimal number bruv!\n"; return 1;
    } || { hex2bin $hex; }
}
main;

Для Пример:

./hex2bin.bash 1aF
Binary of 1aF is: 110101111

Шестнадцатеричное должно быть передано:

./hex2bin.bash XyZ
XyZ is not a hexa decimal number bruv!
"

И затем скопируйте следующее:

#!/bin/bash
num=$1;
dec2bin()
{
    op=2; ## Since we're converting to binary
    quo=$(( $num/ $op)); ## quotient
    rem=$(( $num% $op)); ## remainder
    array=(); ## array for putting remainder inside array
    array+=("$rem"); ## array expansion
        until [[ $quo -eq 0 ]]; do
            num=$quo; ## looping to get all remainder, untill the remainder is 0
            quo=$(( $num / $op));
            rem=$(( $num % $op));
            array+="$rem"; ## array expansion
        done
    binary=$(echo "${array[@]}" | rev); ## reversing array
    printf "$binary\n"; ## print array
}
main()
{
[[ -n ${num//[0-9]/} ]] &&
    { printf "$num is not an integer bruv!\n"; return 1;
    } || { dec2bin $num; }
}
main;

Например:

./dec2bin.bash $var
110100100

Необходимо добавить целое число !!

./dec2bin.bash 420.py
420.py is not an integer bruv!

Кроме того, еще один способ с использованием Python: много медленнее

python -c "print(bin(420))"
0b110100100

От шестнадцатеричного к двоичному с использованием только Bash

Аналогично, от шестнадцатеричного к двоичному, как следует с использованием только Bash:

#!/usr/local/bin/bash ## For Darwin :( higher bash :)
#!/bin/bash ## Linux :)
hex=$1;
hex2bin()
{
    op=2; num=$((16#$hex));
    quo=$(( $num/ $op));
    rem=$(( $num% $op));
    array=();
    array+=("$rem");
        until [[ $quo -eq 0 ]]; do
            num=$quo;
            quo=$(( $num / $op));
            rem=$(( $num % $op));
            array+="$rem";
        done
    binary=$(echo "${array[@]}" | rev);
    printf "Binary of $1 is: $binary\n";
}
main()
{
[[ -n ${hex//[0-9,A-F,a-f]/} ]] &&
    { printf "$hex is not a hexa decimal number bruv!\n"; return 1;
    } || { hex2bin $hex; }
}
main;

Для Пример:

./hex2bin.bash 1aF
Binary of 1aF is: 110101111

Шестнадцатеричное должно быть передано:

./hex2bin.bash XyZ
XyZ is not a hexa decimal number bruv!
0
ответ дан Rakib Fiha 19 September 2018 в 12:06
поделиться