2013-02-10 55 views
0

嗨我想做的事情應該很簡單,但我無法弄清楚。 我有一個指向無符號字符數組的指針,我得到第一個元素,它是一個十六進制數。我想將它轉換爲二進制,因此我可以檢查它是否等於一個數字,如0x01101000。如何檢查一個十六進制數是否等於一個特定的二進制數?

 unsigned char arr[] = {0x25}; //just for example. I am actually using *arr. 
     unsigned char byte = arr[0]; 
     if((byte & 0x01101000) == //not sure if this is the right way to proceed 

希望得到一些幫助!謝謝!!

+1

C語言沒有構造來表示二進制文字。此外,計算機中的所有數字最後都是二進制數,這意味着只比較兩個整數實際上是比較兩個二進制數。 – 2013-02-10 18:41:05

+0

'0x01101000'是一個十六進制數字,你知道嗎?二進制表示將是'1000100000001000000000000'。 – 2013-02-10 18:42:03

+0

數字都是二進制的,無論使用哪種文字。如果被誤解爲二進制文件,你是否真的想要構建一個十六進制表示會給出25的數字? – 2013-02-10 18:42:35

回答

1

請參閱this解答。

如果您使用的是GCC,那麼您可以使用GCC擴展:int x = 0b00010000;

所以你的情況,這將是:

if(byte == 0b01101000) 
... 

請務必將只有8位在你的文字雖然。

+0

謝謝。我可以使用==來檢查平等嗎? – user2057841 2013-02-10 18:46:27

+0

@ user2057841修復了它。不同的運營商有不同的目的有關按位運算符的更多詳細信息,請參閱http://stackoverflow.com/a/6092250/762123。 – JosephH 2013-02-10 18:49:21

+0

@ user2057841,你最好在你的程序中使用十六進制符號,它會更便攜。 0b符號只有在使用GCC時纔有用。 – 2013-02-10 21:16:23

相關問題