我已經寫了一個簡單的代碼來將小數轉換爲24位(3個字節,6個字符)十六進制數。連接一個十六進制數與零
可以說,如果你輸入0.5,它提供的十六進制數字爲0x400000。 0.1 = 0xccccd 0.001 = 0x20c5 雖然答案是正確的,但我想要做的是保留6個字符的表示形式,所以我希望0.1 = 0x0ccccd和
0.001 = 0x0020c5。
- 我想一個可能的方法是十六進制結果轉換爲字符串,然後使用strlen檢查的位數,然後用適當的零拼接的結果。我用這種方法的問題是我不知道如何將十六進制結果存儲在變量中。
即使我將十六進制數字轉換爲字符串並找到要連接的零的數量,我想,該程序會有點笨重。有可能是一種更簡單的方式來實現我想要做的事情。我只是不知道如何。希望有人能向我展示前進的方向。我寫的程序如下。 (真){ float frac_no; std :: cout < <「輸入小數(0-1)或按0退出:」; std :: cin >> frac_no;
if(!frac_no)break; }const int max_limit_24 = exp2(23); //最大值0x7FFFFF(1.0)
float inter_hex;
inter_hex = round(max_limit_24 * frac_no); int int_inter_hex = int(inter_hex); std :: cout < < std :: hex < <「0x」< < int_inter_hex < <「\ n」;;
}
我剛剛試過你推薦的東西,它在名稱空間標識中顯示「沒有成員命名爲setw」。和「namespace std中沒有名爲setfill的成員」。你能告訴我什麼頭文件我需要使用以使上面的行有效。 –
編輯包括#include –
謝謝,這工作。出於好奇,你還記得所有的頭文件嗎? :)我幾乎不記得基本的。 –