float型資料與位元組陣列的轉化

2021-06-20 18:55:58 字數 2972 閱讀 1332

float

型資料與位元組陣列的轉化

mcu和pc

的浮點數都是基於

ieee754

格式的。有4位元組

(float)、8

位元組(double

)、10

位元組(有一些不支援)。這裡以4位元組

(float)

浮點數為例。一、c

語言轉化常見的方法有:

1、強制指標型別轉換。

//轉換float資料到位元組陣列

unsigned char i;

float floatvariable;

unsigned char chararray[4];

(unsigned char) *pdata = ((unsigned char)*)&floatvariable; //把float型別的指標強制轉換為unsigned char型

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

//轉換位元組陣列到float資料

float floatvariable;

unsigned char i;

void *pf;

pf = &floatvariable;

(unsigned char) * px = chararray;

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

2、使用結構和聯合

//定義結構和聯合

typedef union

float_byte;

float value;

}flaot_union;

這樣可以在程式中直接對各資料賦值,然後獲取資料。如對float_byte中的各位元組賦值,可以直接從value中獲取float型資料,反之亦然。

注意,從上面的轉換可以看到,對於定義的陣列unsignedcharchararray[4]

,一般chararray[0]

代表低位元組,

chararray[3]

代表高位元組。

二、c#在c#

中可以使用bitconverter類中的函式進行轉換,如下:

名稱

說明

getbytes(double)

以位元組陣列的形式返回指定的雙精度浮點值。

getbytes(single)

以位元組陣列的形式返回指定的單精度浮點值。

todouble

返回由位元組陣列中指定位置的八個位元組轉換來的雙精度浮點數。

tosingle

返回由位元組陣列中指定位置的四個位元組轉換來的單精度浮點數。

bitconverter類進行基礎資料型別與位元組陣列之間的相互轉換,此類便於操作基本形式的型別。乙個位元組定義為乙個 8位無符號整數。包含的方法如下:

名稱

說明

doubletoint64bits

將指定的雙精度浮點數轉換為 64 位有符號整數。

getbytes(boolean)

以位元組陣列的形式返回指定的布林值。

getbytes(char)

以位元組陣列的形式返回指定的 unicode 字元值。

getbytes(double)

以位元組陣列的形式返回指定的雙精度浮點值。

getbytes(int16)

以位元組陣列的形式返回指定的 16 位有符號整數值。

getbytes(int32)

以位元組陣列的形式返回指定的 32 位有符號整數值。

getbytes(int64)

以位元組陣列的形式返回指定的 64 位有符號整數值。

getbytes(single)

以位元組陣列的形式返回指定的單精度浮點值。

getbytes(uint16)

以位元組陣列的形式返回指定的 16 位無符號整數值。

getbytes(uint32)

以位元組陣列的形式返回指定的 32 位無符號整數值。

getbytes(uint64)

以位元組陣列的形式返回指定的 64 位無符號整數值。

int64bitstodouble

將指定的 64 位有符號整數轉換成雙精度浮點數。

toboolean

返回由位元組陣列中指定位置的乙個位元組轉換來的布林值。

tochar

返回由位元組陣列中指定位置的兩個位元組轉換來的 unicode 字元。

todouble

返回由位元組陣列中指定位置的八個位元組轉換來的雙精度浮點數。

toint16

返回由位元組陣列中指定位置的兩個位元組轉換來的 16 位有符號整數。

toint32

返回由位元組陣列中指定位置的四個位元組轉換來的 32 位有符號整數。

toint64

返回由位元組陣列中指定位置的八個位元組轉換來的 64 位有符號整數。

tosingle

返回由位元組陣列中指定位置的四個位元組轉換來的單精度浮點數。

tostring( array)

將指定的位元組陣列的每個元素的數值轉換為它的等效十六進製制字串表示形式。

tostring( array, int32)

將指定的位元組子陣列的每個元素的數值轉換為它的等效十六進製制字串表示形式。

tostring( array, int32, int32)

將指定的位元組子陣列的每個元素的數值轉換為它的等效十六進製制字串表示形式。

touint16

返回由位元組陣列中指定位置的兩個位元組轉換來的 16 位無符號整數。

touint32

返回由位元組陣列中指定位置的四個位元組轉換來的 32 位無符號整數。

touint64

返回由位元組陣列中指定位置的八個位元組轉換來的 64 位無符號整數。

float型資料與位元組陣列的轉化

float 型資料與位元組陣列的轉化 mcu和 pc的浮點數都是基於 ieee754 格式的。有4位元組 float 8 位元組 double 10 位元組 有一些不支援 這裡以4位元組 float 浮點數為例。一 c 語言轉化常見的方法有 1 強制指標型別轉換。html view plain co...

char 位元組陣列 轉QString

char位元組陣列型別轉qstring裡邊要特別注意的是,陣列中含有00時,直接用qstring的方法tolatin1 轉換會出問題,遇到0就認為結束。下面是位元組陣列轉qstring型別的列子 位元組陣列轉16進製制字串,用於16進製制顯示 static qstring tohexstr qbyt...

C 字串到位元組陣列,位元組陣列轉整型

int num 12345 string num1 convert.tostring 12345,16 byte bytes bitconverter.getbytes num 將int32轉換為位元組陣列 num bitconverter.toint32 bytes,0 將位元組陣列內容再轉成in...