Другие языки программирования и технологии

Linux, bash: можно как-то работать с 16-ричными значениями?

Например, присвоить переменной не числовое или текстовое значение, а гексадецимальное, скажем, 6Fh, 75h, 67h, 67h, 61h
Валерий Вожжов
Валерий Вожжов
95 785
Странно, что в вопросе прозвучало числовое, текстовое, но не десятичное. Все величины в коде и текстовые и числовые, разница именно в основании (base). В баше позволительно задать любое основание от 2х до 64х
 echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA)) 


матчасть tldp.org/LDP/abs/html/index.html
Дима Атмажитов
Дима Атмажитов
88 924
Лучший ответ
в каком-то смысле можно, arithmetic expansion и printf в помощь
 $ a=0x6F
$ echo $a
0x6F
$ a=$((a))
$ echo $a
111
$ a=$(printf "0x%X" $a)
$ echo $a
0x6F
но опять же, технически `а` всё это время является строкой, а не числом
Антон Ларин
Антон Ларин
36 952
Да, в bash можно работать с 16-ричными значениями. Для этого можно использовать специальный синтаксис, который позволяет задавать значения в 16-ричной системе счисления.

Например, чтобы присвоить переменной значение 6Fh, 75h, 67h, 67h, 61h в 16-ричном формате, можно использовать следующий синтаксис:

var=$'\x6F\x75\x67\x67\x61'

Да, в bash можно работать с 16-ричными значениями. Для этого можно использовать специальный синтаксис, который позволяет задавать значения в 16-ричной системе счисления.

Например, чтобы присвоить переменной значение 6Fh, 75h, 67h, 67h, 61h в 16-ричном формате, можно использовать следующий синтаксис:

csharp
Copy code
var=$'\x6F\x75\x67\x67\x61'
В данном примере мы использовали специальную последовательность $'...', которая позволяет задавать значения в формате ASCII-кода. Внутри кавычек мы указали последовательность 16-ричных значений, которые соответствуют ASCII-кодам символов 'o', 'u', 'g', 'g', 'a'. Когда мы присваиваем эту последовательность переменной var, она становится строковым значением в формате ASCII.

Также можно использовать команду printf для работы с 16-ричными значениями. Например, чтобы вывести значение 6Fh на экран, можно использовать следующую команду:

printf "\x6F\n"

Эта команда преобразует 16-ричное значение в символ и выводит его на экран.
Xamid Kobilov
Xamid Kobilov
11 256

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