看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): gcc 問題(Question): 目前情況是我有8個#define #define A1 '1' #define A2 '2' #define A3 '3' #define A4 '4' #define A5 '5' #define A6 '6' #define A7 '7' #define A8 '8' 但是我想要改一個做法,透過一個#define INPUT #define INPUT 0x12345678 然後這8個#define可以從INPUT裡面取得上面我想要的結果 我有想過一個方法 但是失敗了 #define A1 (((INPUT>>28)&0xf)+48) #define A2 (((INPUT>>24)&0xf)+48) #define A3 (((INPUT>>20)&0xf)+48) #define A4 (((INPUT>>16)&0xf)+48) #define A5 (((INPUT>>12)&0xf)+48) #define A6 (((INPUT>>8)&0xf)+48) #define A7 (((INPUT>>4)&0xf)+48) #define A8 (((INPUT)&0xf)+48) 所以想請問大家有沒有其他的方法, 謝謝. 餵入的資料(Input):#define 0x12345678 預期的正確結果(Expected Output): 可以和 #define A1 '1' #define A2 '2' #define A3 '3' #define A4 '4' #define A5 '5' #define A6 '6' #define A7 '7' #define A8 '8' 有一樣的效果 謝謝... -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.216.66
tropical72:我覺得直接展可能好點耶..不然可能就這樣 09/17 00:23
tropical72:http://codepad.org/Wf4lK1HS 09/17 00:23
kakar0to:我不能使用function 只能透過#define的方式達到 09/17 00:31
xxtuoo:搞不懂..你的做法那裏有問題 這樣不是可以的嘛 09/17 00:37
tropical72:我跑是可以 http://codepad.org/uezCbxp8 09/17 00:38
tropical72:我是用 #define macro,不是用 function,不衝突吧 ? 09/17 00:38
kakar0to:因為我的code是要寫在.h檔裡面, 用我的作法 09/17 00:40
kakar0to:在公司的compiler 好像會錯.. 09/17 00:41
kakar0to:可能要試試看tropica172大大的作法... 09/17 00:41
tropical72:你的方法可能會卡在字集問題吧..如非 ASCII 字集時... 09/17 00:43
kakar0to:非ASCII字集是甚麼 字元不是都是ASCII嗎? 09/17 00:44
kakar0to:還有 tropica172大大 為什麼astring[]第一個字元是'x' ? 09/17 00:45
tropical72:那不影響macro,放'x'是沒用到,#define A0 'x' 之意. 09/17 00:48
tropical72:字集不是只有ASCII code,可參考 #1EPPULmS,連結翻到 09/17 00:50
tropical72:字元(二)編碼, 記得別用 IE 開,會沒辦法正常顯示。 09/17 00:51
kakar0to:了解 順便問一下 BB[0] 放的是甚麼? 09/17 00:52
kakar0to:BB[0] 是'x'嗎? 那BB[1] 是1嗎? BB[1]好像不是'1' 09/17 00:53
tropical72:BB[0]="x12345678"[0],這串字串取第0個索引,就是 'x' 09/17 00:53
tropical72:一樣,因為B0沒用到,所以放一個充數而已. 09/17 00:54
kakar0to:瞭解了 T大是用字串 "x12345678" 09/17 00:54
kakar0to:所以每一個都是字元.. 09/17 00:54
tropical72:嗯,所以應該符合該環境之編碼方式,wide string可能再修 09/17 00:55
kakar0to:感謝 我會回公司試試看T大的作法... 09/17 00:56
firejox:把+48變成+'0'就好了呀-->避免character set 09/17 13:07
tropical72:firejox 大說的也是,熊熊沒想到. 09/17 14:15