16진수 스트링을 decimal으로 변환하는 매크로를 작성했는데..
매크로 * 값 하면 에러 나고..
값 * 매크로 하면 에러가 나지 않네요.. 매크로를 수식 중간에 쓸 수 없다.. 뭐 이런 얘기는 못 들은 것 같은데..
#define HEXTODECIMAL(x) (( x == "0") ? 0 : \
(( x == "1") ? 1 : \
(( x == "2") ? 2 : \
(( x == "3") ? 3 : \
(( x == "4") ? 4 : \
(( x == "5") ? 5 : \
(( x == "6") ? 6 : \
(( x == "7") ? 7 : \
(( x == "8") ? 8 : \
(( x == "9") ? 9 : \
(( x == "A") ? 10 : \
(( x == "B") ? 11 : \
(( x == "C") ? 12 : \
(( x == "D") ? 13 : \
(( x == "E") ? 14 : \
(( x == "F") ? 15 : 0 ))))))))))))))));
....
UnicodeString HexStr = "A5";
int i,j,k;
UnicodeString a,b;
a = HexStr.SubString(1,1).UpperCase();
b = HexStr.SubString(2,1).UpperCase();
i = HEXTODECIMAL(a) * 16; // Error~! but => i = 16 * HEXTODECIMAL(a); => Ok~!
j = HEXTODECIMAL(b);
k = i + j;
[BCC32 Error] Unit2.cpp(48): E2062 Invalid indirection
코스 상 좀 깔끔하지 않은 것 같아서.. 왜 이런 것이지요?
그리고, Hex String을 값으로 바꾸는 깔끔한 방법은?
감사합니다.
|