XOR переменной оболочки и двоичного файла

Я имею MFC8480DN и только когда-либо мог отправить сканирования в компьютерное выполнение brscan-skey от сканера/принтера, никогда дистанционное управление сканер/принтер. Как Вы пытаетесь отправить сканирования? Команда Вы показываете brscan-skey -l просто шоу, что программное обеспечение получения видит сканер.

Если Вы смотрите на использование для brscan-skey это указывает следующее:

$ brscan-skey --help
This tool enables you to scan a document by using the
Scan key on the Brother MFC through the network.

При попытке использовать интерфейс SANE/XSANE, я полагаю, что Вам будут нужны дополнительные установленные драйверы, я успешно использовал сканер в своем Брате MFC8480DN для отправки заданий в GIMP этим способом.

Я верю всему, в чем Вы нуждаетесь, доступно здесь на веб-сайте Брата: установка ключевого инструмента сканирования.

2
10.05.2014, 17:32
3 ответа
[118210]Ваша оболочка может обрабатывать битовые операции, но для любой серьезной обработки она будет [118586]ужасно [118587] медленной, и она не может обрабатывать ничего, кроме, скажем, 20 или около того цифр за один раз. Тем не менее:

Я использовал [118588]bc[118589] в прошлом для захвата байтов в двоичном виде, так что ваш вопрос заставил меня погуглить...

Exclusive- or (XOR) для GNU bc[12123]Если вы нашли свой путь через интернет к этому вопросу, то шансы... вы ищете bc эквивалент оператора C [118744]^[118745].[12124]Тревожный факт: в [118746]bc[118747] такого не существует. В [118748]bc[118749], стрелка вверх оператор используется для целочисленной экспоненции, т.е. [118750]2^x[118751] возвращает a мощность 2, а не х с битом 2 перевернутым. Если вы ищете эквиваленты битовых операторов для XOR, а также AND, OR и a еще несколько экзотических родственников, посмотрите на этот сайт logic.bc, и его родственников, которые содержат функции для выполнения каждой из них.[12125] Если вы ищете логическое [118752]XOR[118753], которое можно было бы поместить в оператор if, например logical [118754] &&[118755] и [118756] ||[118757], попробуйте использовать [118758]!=[118759] и окружающие вас условия с помощью в скобках. например:[12126]c=0;if((a==1)!=(b==2)){c=3}[12127]Установит c в 3, если a равно 1 или b равно 2, но нет, если a равно 1, а b равно 2 одновременно[12128](Давным-давно, это было секретом для внутренних дел logic.bc xor(), но она была заменена более быстрой функцией Алгоритм.)[12129]Вышеизложенное взято из [118604]bc[118605] FAQ. Функция [118606]logic.bc[118607], упоминаемая выше, включает в себя [118608] битовую [118609] логику, которую вы ищете. Ее можно найти [118610] здесь [118611]. Ее описание:[12130]Большой набор функций для выполнения [118762]битовой [118763] функции, такой как AND, ИЛИ, НЕ и КСОР. Использует двойное дополнение для отрицательных чисел, в отличие от предыдущие версии этого файла, которые вообще не поддерживались. Некоторые из здесь функции будут использовать глобальную битовую переменную, которая сама по себе инициализируется как часть этого файла, чтобы эмулировать найденные размеры байтов/паролей в большинстве компьютеров. Если эта переменная установлена в ноль, то бесконечный битовая пропускная способность предполагается. Многие функции будут выдавать предупреждение, если есть подозрение, что вторичное представление числа с плавающей точкой был создан, например: [12131]1.1111... это SFPR [118765]10.0000...;`` Эти предупреждения можно отключить, установив глобальную переменную [118766]sfpr_warn[118767] в значение [118768]0[118769]. (по умолчанию 1). [12133] Фиксированный размер слова [12134] Бесконечный размер слова [12135] Обычные битовые [12136] Twos дополняют [12137] Сдвиг битов [12138] Серый код [12139] 'Умножение' [12140] Плавающая точка [12141] Плавающая точка 'Умножение' [12142] Серый код + плавающая точка [12143]
2
27.01.2020, 22:06
[118148] Я использовал двоичный код C.

1
27.01.2020, 22:06

У меня что-то почти работает в SH, но это слишком медленно

#!/bin/sh

small_hex_to_bin() {
    hex=$1
    hex_length=${#1}
    bin=$(echo "ibase=16;obase=2;$hex" | bc)
    bin_length=$((4*$hex_length))
    bin=$(printf %0*d $bin_length $bin)
    echo $bin
}

hex_to_bin() {
    hex=$1
    hex_length=${#hex}
    for i in $(seq 1 $hex_length); do
        hex_digit=$(expr substr $hex $i 1)
        bin_digits=$(small_hex_to_bin $hex_digit)
        echo -n $bin_digits
    done
    echo ""
}

bin_to_hex() {
    bin=$1
    hex=$(echo "ibase=2;obase=10000;$bin" | bc)
    echo $hex
}

char_to_hex() {
    char=$1
    hex_lower=$(printf %x \'$char\')
    hex=$(echo $hex_lower | tr '[:lower:]' '[:upper:]')
    echo $hex
}

char_to_bin() {
    char=$1
    hex=$(char_to_hex $char)
    bin=$(small_hex_to_bin $hex)
    echo $bin
}

string_to_bin() {
    s=$1
    l=${#s}
    for i in $(seq 1 $l); do
        char=$(expr substr $s $i 1)
        bin=$(char_to_bin $char)
        echo -n $bin
    done
    echo ""
}

file_to_bin() {
    filename=$1
    hex_spaces=$(xxd -u -p $filename)
    hex=$(echo $hex_spaces | tr -d '\n' | tr -d ' ')
    bin=$(hex_to_bin $hex)
    echo $bin
}

min() {
    if [ $1 -ge $2 ]; then
        echo $2
    else
        echo $1
    fi
}

bit_xor() {
    if [ $1 -eq $2 ]; then
        echo 0
    else
        echo 1
    fi
}

xor() {
    b1=$1
    b2=$2
    l1=${#b1}
    l2=${#b2}
    l=$(min $l1 $l2)
    for i in $(seq 1 $l); do
        c1=$(expr substr $b1 $i 1)
        c2=$(expr substr $b2 $i 1)
        c=$(bit_xor $c1 $c2)
        echo -n $c
    done
    next_i=$(($l + 1))
    if [ $l -ne $l1 ]; then
        for i in $(seq $next_i $l1); do
            c1=$(expr substr $b1 $i 1)
            echo -n $c1
        done
    fi
    if [ $l -ne $l2 ]; then
        for i in $(seq $next_i $l2); do
            c2=$(expr substr $b2 $i 1)
            echo -n $c2
        done
    fi
    echo ""
}

#stdin=$(cat)
#file=$(cat $1)
#hex_to_bin $1
file_to_bin $1
0
27.01.2020, 22:06

Теги

Похожие вопросы