2017-03-07 95 views
0

我得到一個int值從0到255,我想將該值轉換爲十六進制或二進制,所以我可以將它用於一個8位寄存器(PIC18F UC)。 我該如何做這種轉換? 我試圖從轉換庫中使用IntToHex函數,但此函數的輸出是一個char值,從這裏我卡住了。 我正在使用mikroc進行圖片處理。 我應該從哪裏開始? 謝謝!從int轉換爲二進制或十六進制在mikroc

+2

不清楚你在問什麼,位是位。向我們展示您想要以編程方式執行的具體示例。我在這個基地獲得了這個值,並且希望它以這種形式在這個基地中轉換爲這個值,所以我可以在這裏使用它... –

+1

0到255之間的數字可以放入一個8位寄存器,這是你唯一需要擔心的事情。瞭解8位或16位有符號/無符號整數的數字限制。十六進制,八進制,十進制或二進制 - 這些只是同一個整數的*表示*。您擁有的值通常是在微控制器中作爲*二進制*編碼編碼的,並且只有在您要執行按位運算(提取,掩碼或移位單個位)時才需要關注。當你想把*表達*改成十六進制/十進制/十進制時,唯一的地方就是將值顯示給用戶。 – Groo

+0

換句話說,'IntToHex'可能返回一個'char' **指針**,即一串字符,因爲它將整數轉換爲文本表示以供顯示。例如,如果你的值是'255','IntToHex'可能會返回一個以null結尾的字符串'「FF」'。但是要將值分配給寄存器,只需分配**實際值**,而不是字符數組。 – Groo

回答

0

這是一個常見問題。許多人不明白,十進制15是相同的十六進制F是相同的八進制17是相同的二進制1111.

不同的數字系統是人類,對於CPU,它都是二進制!

當OP說,

我得到了一個int值從0到255,我想那個值轉換爲 十六進制或二進制,所以我可以用它爲8位寄存器(PIC18F UC)。

它反映了這種誤解。可能是因爲調試器配置爲顯示「十進制」值,示例代碼/數據表顯示寄存器操作的十六進制值。

因此,當您從0到255的「int」值時,可以直接將該數字寫入8位寄存器。您不必將其轉換爲十六進制。十六進制只是讓人類的生活變得輕鬆的代表。

你可以做的是 - 這是很好的做法 -

REG_VALUE = (unsigned char) int_value;