我有一個存儲在short int
中的值,只有在用小數點表示爲十六進制數字時纔有意義。爲了舉例說明:如果short int
包含1132十進制(534h),那麼我需要輸出「5.34」。價值來自公司共享庫中隱藏的功能,所以我必須接受我所得到的。結果不需要是數字類型(int或float);相反,它可以是任何類型的(例如字符串),我可以將它們輸入到標準輸出流中。如何在一個整數的十六進制表示中放置小數點?
short int
中的給定值始終是這樣的,當以十六進制數字表示時,所有數字都將在0-9範圍內(從不是A-F)。總是應該有兩位小數。
我知道我可以用std::hex
代表十進制數字作爲十六進制數字,用std::out
輸出「534」,但我不知道如何將這些單獨的數字(5,3,4)存儲在內存中,這樣我可以插入一個.
在他們。
一旦我做得到十六進制數字,我應該將一組十六進制數字轉換爲一個字符串,並將小數點從右邊三個字符?或者更容易以某種方式轉換爲浮點格式併除以100(64h)?
你能解釋你的緩衝區大小計算嗎? –
容易。 'input'具有'sizeof input'字節,一個字節具有'CHAR_BIT'位,4位用於整個十六進制數字,但不能保證'CHAR_BIT * sizeof input'可以被4除盡,因此首先加3(標準unsigned int算術舍入)。現在我們需要1個字符作爲'.',一個用於'\ 0',所以再加兩個字節。 – Deduplicator
@Cerran:您的意思是每個4位(16個可能值),總共8位(256個可能的值)。 – Deduplicator