2012-09-05 112 views
1

我試圖將double轉換成little-endian十六進制字符串或直接轉換爲特定類型的long(見下文)。將double轉換爲LSBF(小端)十六進制字符串

以前,我將一個預定義的little-Endian十六進制字符串轉換爲long,如下所示。

string hcommand = "01AC"; char * p; long n = strtol(hcommand.c_str(), &p, 16); 這個按照要求工作。

現在我試圖將little-endian(最低有效字節優先)形式的double轉換爲十六進制字符串(然後替換上面代碼中的hcommand),或者直接從double轉換爲長度相同的類型見上面。

我試過了,它沒有像上面那樣處理。

double myDouble = 44033; long hcommand = (long)_byteswap_ulong((int)myDouble);

謝謝。

回答

0

我發現一旦將_byteswap_ulong轉換爲_byteswap_ushort,結果是相同的。

+0

是的。我希望你明白*爲什麼* =) – paddy

0

我懷疑問題是你只看四個字節中的兩個。

在第一個示例中,您將得到值0xAC01(428)。

在第二個示例中,您將myDouble這是0x01AC0000並將其變成0x0000AC01(28049408)。

如果您只想要一個字,請使用_byteswap_ushort((unsigned short)myDouble)

相關問題