double資料如何轉位元組序?請看

2021-08-25 09:25:56 字數 728 閱讀 6962

double是8位元組的資料型別,因此應該首先有交換8位元組整型的能力。

/* 轉換8位元組整型: */

typedef unsigned long long uint64;

#define ntohll(x) ( ((uint64)x & 0xff00000000000000ll)>>56 | /

((uint64)x & 0x00ff000000000000ll)>>40 | /

((uint64)x & 0x0000ff0000000000ll)>>24 | /

((uint64)x & 0x000000ff00000000ll)>>8 | /

((uint64)x & 0x00000000ff000000ll)<<8 | /

((uint64)x & 0x0000000000ff0000ll)<<24 | /

((uint64)x & 0x000000000000ff00ll)<<40 | /

((uint64)x & 0x00000000000000ffll)<<56 )

/* 為了使問題清晰,先定義個函式 */

double swapdoubleendian(double* pdval)

/* 轉換double資料的巨集 */

#define ntohd(x) (swapdoubleendian(&(x)))

float位元組序亦可仿此

關鍵字:double endian float ntohll

大端法 小端法 網路位元組序 轉

一般來說,大部分使用者的作業系統 如windows,freebsd,linux 是little endian 的。少部分,如mac os 是big endian 的。所謂msb most significant byte 就是,乙個數字中,最重要的那位,比如,12004,中文讀作,一萬兩千零四,那最...

前台接受資料,Integer轉double

前台接受系列資料,後端使用object接,資料在js做了處理,是乙個百分比,1 100之間除以100,傳到後端的有可能是double,或者integer 為1時,haha,還有0,寫到這才想起來,趕緊改改程式 將object強轉為integer先判斷是夠為空,再判斷是否為0,1.為0,1則用doub...

int float寫入位元組資料各位元組序的實現

int與位元組陣列轉換比較簡單,用變數位與oxff等和移位即可實現,因為變數位與0xff等已經不受計算機cpu大小端序的影響,可直接實現,如 define byte0 littleend val static cast val 0xff define byte1 littleend val stat...