怎麼將節16進製制轉化成浮點數,怎麼將4位元組16進製制轉化成浮點數

2021-12-23 04:49:56 字數 2997 閱讀 5986

1樓:兔老大公尺奇

四個位元組的十六機制陣列轉浮點數:

byte[bytes=newbyte[4];

bitconverter.tosingle(bytes,0)。

四位元組16進製製數可轉換為四個二進位制位元組(bytes),從而使用api函式來處理成單精度浮點數。以下用vb**處理。

vb有專門的api函式copymemory能處理2-10進製浮點數轉換和10-2進製浮點數轉換。

擴充套件資料

例:char p[4] = ; 轉換成浮點數:0.0205140,還有如何判斷,這四個十六進位制轉換成浮點數是正數還是負數。

#include

int main(void)

;  int i = 0;//printf("b1:%d\n",b);

for(i = 0; i<4; i++)

//printf("b2:%d\n",*b);

printf("結果為:\n");printf("%f\n", a);

//printf("a:%d\n",a)

2樓:文件類共創空間

四位元組16進製製數可轉換為四個二進位制位元組(bytes),從而使用api函式來處理成單精度浮點數。

以下用vb**處理。

vb有專門的api函式copymemory能處理2-10進製浮點數轉換和10-2進製浮點數轉換。

下列**演示了10進製single(單精度浮點型轉為16進製制字元顯示的浮點數和其相反運算:

option explicit

private declare sub copymemory lib "kernel32" alias "rtlmovememory" (destination as any, source as any, byval length as long)

private sub bintosin_click()

dim sinstr as string

dim sinsj as single

dim buffer(3) as byte

dim i as integer

sinstr = text2

for i = 1 to len(text2) step 2

next

copymemory byval varptr(sinsj), byval varptr(buffer(0)), 4

text3 = sinsj

end sub

private sub sintobin_click()

dim i as integer

dim hexdata as string

dim a as single

dim buffer(3) as byte

a = val(text1)

copymemory buffer(0), a, 4

for i = 0 to 3

if len(hex(buffer(i))) = 1 then

hexdata = "0" & hex(buffer(i)) + hexdata

else

hexdata = hex(buffer(i)) + hexdata

end if

next

text2 = hexdata

end sub

需要注意的事項是這四位元組的高低位元組排序,不能搞錯。

vb的single 資料型別:

single(單精度浮點型)變數儲存為 ieee 32 位(4 個位元組)浮點數值的形式,它的範圍在負數的時候是從 -3.402823e38 到 -1.401298e-45,而在正數的時候是從 1.

401298e-45 到 3.402823e38。single 的型別宣告字元為感嘆號 (!

)。在記憶體以32位二進位制形式存在:

******xx ******xx ******xx ******xx

第1位為符號位;

第2-9位為階碼位;

第10-32位為2進製小數尾值;

即f2 ^ n * 1. ******x ******xx ******xx;

其中,f為正號或負號(首為為0正數,首位為1負數;

n為2-9位組成的byte資料值;

******x ******xx ******xx為尾數。

參考

3樓:匿名使用者

上面提供的方法((float)i;)都存在乙個問題,即只是把整數強制轉換為浮點數罷了,並不能解決樓主關心的問題。

有個簡單的辦法:

dword dwvalue = 0xc2c7fae1;

float fvalue;

printf("%f\n", fvalue);

4樓:匿名使用者

int i = 0xc2c7fae1;

float f = (float)i

5樓:匿名使用者

參考ieee單雙精度浮點數的標準格式。0xc2c7fae1是乙個32位的數字,使用單精度浮點數的格式來解析,最低位第0位到第22位為尾數,第23位到第30位為指數,31位為符號位。

c2c7fae1二進位制值為:

11000010110001111111101011100001其符號位為1(負號)

指數為10000101(實際為它減去1111111等於110)尾數為10001111111101011100001(帶有乙個隱含的「1.」)

真實值為:【符號】×【1.尾數】×( 2^【指數-127】)因此,它表示-1.10001111111101011100001×10^(110)(二進位制原碼)或者

-1100011.11111101011100001

將二進位製數1111轉化成八進位制等於多少我要寫

方法1 一位八進位制資料等於3位二進位制資料,那麼將二進位制每3位進行一次歸併可得到八進位制資料 11110010.101可寫成011 110 010.101歸併 每3位轉換成十進位制資料 後的八進位制資料為362.5 方法2 先轉換成十進位製數然後再轉換成八進位制 128 64 32 16 8 4...

100轉化成十六進位制是多少,110100B是二進位制還是十六進位制,轉換成十進位制是多少

100 十進位制 64 十六進位制 十進位制整數化十六進位制的通用計算方法 用16整除十進位制整數,可以得到乙個商和餘數 再用16去除商,又會得到乙個商和餘數,如此進行,直到商為小於1時為止,然後把先得到的餘數作為十六進位製數的低位有效位,後得到的餘數作為十六進位製數的高位有效位,依次排列起來,得到...

十進位制0 625轉化成二進位制是多少?帶上步驟

答案是 0.625 0.101 2。十進位制,即1.滿十進一,滿二十進二,以此類推 2.按權,第一位權為10 0,第二位10 1 以此類推,第n位10 n 1 該數的數值等於每位位的數值 該位對應的權值之和。二進位制是計算技術中廣泛採用的一種數制。二進位制資料是用0和1兩個數碼來表示的數。它的基數為...