2012-12-12 57 views

回答

2

不,C沒有內置的二進制轉換函數。但是,它們不難編寫,並且是一個很好的練習來演示您對二進制算術的理解。

+0

'strtoul(,,2)'讀取二進制字符串就好了,這是問題的一部分。 – dmckee

+0

@Cornstalks這就是爲什麼上述是格雷格的評論*「C沒有內置二進制轉換函數」*而不是答案。 – dmckee

0

一些libc中有它的擴展名(你可以printf的A%B),但這裏是一個基本的宏實現,如果你只需要二進制

#define putbin(d) do{ \ 
    unsigned long long i=1ULL<<63; \ 
    while (!((unsigned long long) d & (i/=2))); /* optional - remove leading zeroes */ \ 
    do { ((unsigned long long) d & i) ? write(1,"1",1) : write(1,"0",1); } \ 
    while (i/=2); \ 
write(1,"\n",1); /* optional - add new line */ \ 
} while (0) 
+0

順便說一句,奇怪的是它是在printf中有%b選項的dietlibc – technosaurus

+0

這段代碼在一個非常常見的用例中失敗(帶有無限循環)。 –