Рассчитать длину строки в bash - PullRequest
1 голос
/ 06 февраля 2020

У меня есть следующая шестнадцатеричная строка

VAR='\x45\x8A\xC8\x4E\x58\xBB\x16\x17\x55\x96\xA5\x26\xD1\xDA\x56\x04\xA7\xBD\x6F\xA5'

Мне нужно найти число байтов, равное 20. Но если я наберу

length=${#VAR}
echo "var length: "$length

, я получу 80. Как я могу сделать? Заранее большое спасибо!

Ответы [ 2 ]

6 голосов
/ 06 февраля 2020

не имеет 20 байтов; он имеет 80, поскольку \x45 - это 4 отдельных символа, а не литерал, представляющий один байт. VAR=<b>$</b>'\x45...' даст вам ожидаемую 20-байтовую строку.

0 голосов
/ 06 февраля 2020

Использование wc

echo $VAR | wc -c

$ wc --help
Usage: wc [OPTION]... [FILE]...
  or:  wc [OPTION]... --files0-from=F
...
The options below may be used to select which counts are printed, always in
the following order: newline, word, character, byte, maximum line length.
  -c, --bytes            print the byte counts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...