我有一個腳本,它會生成兩個隨機的32位浮點數a和b,並將它們分開以形成輸出c。32位數字的十六進制表示
我想以十六進制格式存儲所有這三個浮點數,作爲包含8個字符的字符串。
我找到了一個巧妙的方法,在這裏做這個在線:
http://forums.devshed.com/c-programming-42/printing-a-float-as-a-hex-number-567826.html
這是我的執行他們的建議在C++
fileout << hex << *(int*)&a[i] << endl;
fileout << hex << *(int*)&b[i] << endl;
fileout << hex << *(int*)&c[i] << endl;
這適用於大多數的情況。但是,有些情況下,字符串不是8個字符寬。有時他們只有一點點長。以下是輸出示例:
af1fe786
ffbbff0b
fffbff0b
7fbcbf00 <-I like it, but has zeros at the end
77fefe77
7ffcbf00
fdad974d
f2fc7fef
4a2fff56
67de7744
fdf7711b
a9662905
cd7adf0 <-- problem
5f79ffc0
0 <--- problem
6ebbc784
cffffb83
de3bcacf
e7b3de77
ec7f660b
3ab44ae4
aefdef82
fffa9fd6
fd1ff7d2
62f4 <--why not "62f40000"
ebbf0fa6
ddd78b8d
4d62ebb3
ff5bbceb
3dfc3f61
ff800000 <- zeros at end, but still 8 bytes?
df35b371
e0ff7bf1
3db6115d
fbbfbccc
ddf69e06
5d470843
a3bdae71
fe3fff66
0 <--problem
979e5ba1
febbe3b9
0 <-problem
fdf73a80
efcf77a7
4d9887fd
cafdfb07
bf7f3f35
4afebadd
bffdee35
efb79f7f
fb1028c <--problem
我想要8個字符的表示形式。至於零的情況,我想將它轉換爲「00000000」。
但是我對那些長度只有4,5,6,7字符的人很困惑。爲什麼有些數字在最後填零,其他數字被截斷?如果一個int是32位,爲什麼有時只有一個位出現?這是由於臭名昭着的「低於正常」數字嗎?
謝謝。
這種 「巧妙的方式」 是語言標準是非法的。 – osgx 2013-02-16 10:12:37
'< - 爲什麼不是「62f40000」'< - 因爲它是000062f4。如通常的數字表示,前導零被省略。 – us2012 2013-02-16 10:14:07