TL;DR: как преобразовать целые числа в шестнадцатеричные, а также как преобразовать строку из 1 символа в шестнадцатеричный (например, 'F' -> 0xF )
хотите преобразовать символ в шестнадцатеричное значение, сделайте некоторую математику, а затем преобразуйте обратно в символ.
поэтому у меня есть что-то вроде этого:
addBits: aValue move: action
"aValue is always either 5 or 10 (0xA)"
"move is either 'a' for add or 's' for subtract"
|sum conversion|
"self stringToMakeHex is the string, it's always either an 'F', 'A', '0',
or '5' I need to turn it into either 0xF,0xA,0x0,or 0x5"
conversion := (self stringToMakeHex) asInteger.
(action = 's')
ifTrue:[sum:= conversion - aValue.]
ifFalse:[sum:=conversion + aValue.].
stringToMakeHex: (sum asString).
Я знаю, что не должен делать asInteger
, поскольку он каким-то образом преобразует «F» в ноль, поэтому мне интересно, есть ли хороший способ получить из него 0xF или даже 15. Моя другая проблема заключается в том, что aValue поступает как целое число (5 и 10 с основанием 10), поэтому мне нужен способ получить шестнадцатеричные значения 0x5 и 0xA.
Все эти данные извлекаются через TCP / IP из программы сравнения, поэтому я не могу контролировать, какой формат я получаю ... Не помогает то, что мне нужно отправить строку обратно, чтобы связь обрабатывалась через соединение