TL;DR: как сложить вместе 4 числа и сохранить ответ в виде строки, представляющей шестнадцатеричное значение (например, 10+5, сохраненное как «F», или 2+1, сохраненное как «3 ")
.
Об этом уже спрашивали ЗДЕСЬ, но ни один из ответов не является достаточным для моего приложения. Я покажу, как я работаю ниже, и что я хотел бы получить в комментариях:
| response bit1 bit2 bit3 bit4 addedBits objStatus|
"are objects on station1?"
(self robot hasWaferAt: 1)
ifTrue:[bit1:=2r1000.bit3:=2r10.]
ifFalse:[bit1:=2r0000.bit3:=2r00.].
"are objects on station2?"
(self robot hasWaferAt: 2)
ifTrue:[bit2:=2r100.bit4:=2r1.]
ifFalse:[bit2:=2r000.bit4:=2r0.].
addedBits := (((bit1 bitOr: bit2)bitOr: bit3)bitOr: bit4).
ЗДЕСЬ МНЕ НУЖНО, чтобы objStatus хранил addBits в виде строки (т. е. если addBits равен 13, waferStatus должен содержать «D» или «D»), потому что затем я передаю эту строку по TCPIP:
response := (myCommand getUnitNumberFromResponse: aCommandString),
(myCommand getSequenceNumberFromResponse: aCommandString),
'0000', "Ack code"
'0000', "error code: 0000 is success."
waferStatus, "which stations have objects"
'FFF'. "no objects present = FFFF"
response := (myCommand commandResponsePrefix),
response,
(myCommand computeChecksum: response).
self sendMessage: response.