Десятичное в двоичное с использованием только 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!
Если вы хотите запустить новый мастер на основе вашего выбора на первой странице, вы можете использовать базовый класс JFace org.eclipse.jface .wizard.WizardSelectionPage .
select * from storeopeninghours_tostring(1) f(a text, b text, c text);
Таким образом, вы должны определить, что вы ожидаете от схемы выходной строки функции в запросе. Чтобы избежать этого, вы можете указать выходные переменные в определении функции:
CREATE OR REPLACE FUNCTION storeopeninghours_tostring(open_id numeric, a OUT text, b OUT text, c OUT text)
RETURNS SETOF RECORD LANGUAGE 'plpgsql' STABLE STRICT AS $$
BEGIN
RETURN QUERY SELECT '1'::text, '2'::text, '3'::text;
RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
END
$$;
(не совсем уверен, почему требуются дополнительные :: text приведения ... Возможно, '1' по умолчанию является varchar?)
Я довольно часто использую временные таблицы в своих функциях. Вам нужно создать возвращаемый тип в базе данных, а затем создать переменную этого типа для возврата. Ниже приведен пример кода, который делает именно это.
CREATE TYPE storeopeninghours_tostring_rs AS
(colone text,
coltwo text,
colthree text
);
CREATE OR REPLACE FUNCTION "public"."storeopeninghours_tostring" () RETURNS setof storeopeninghours_tostring_rs AS
$BODY$
DECLARE
returnrec storeopeninghours_tostring_rs;
BEGIN
BEGIN
CREATE TEMPORARY TABLE tmpopeninghours (
colone text,
coltwo text,
colthree text
);
EXCEPTION WHEN OTHERS THEN
TRUNCATE TABLE tmpopeninghours; -- TRUNCATE if the table already exists within the session.
END;
insert into tmpopeninghours VALUES ('1', '2', '3');
insert into tmpopeninghours VALUES ('3', '4', '5');
insert into tmpopeninghours VALUES ('3', '4', '5');
FOR returnrec IN SELECT * FROM tmpopeninghours LOOP
RETURN NEXT returnrec;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
select * from storeopeninghours_tostring()
CREATE OR REPLACE FUNCTION foo(open_id numeric, OUT p1 varchar, OUT p2 varchar, OUT p3 varchar) RETURNS SETOF RECORD AS $$
BEGIN
p1 := '1'; p2 := '2'; p3 := '3';
RETURN NEXT;
p1 := '3'; p2 := '4'; p3 := '5';
RETURN NEXT;
p1 := '3'; p2 := '4'; p3 := '5';
RETURN NEXT;
RETURN;
END;
$$ LANGUAGE plpgsql;