2012-05-04 46 views
2

我有一個問題轉換爲unsigned short(UInt16)的字符數組。我的轉換方法似乎是錯誤的... 下面是代碼:轉換字符[]爲uint16(無符號短)給出錯誤的數字

#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 


int _tmain(int argc, _TCHAR* argv[]) 
{ 
    // Symbols 0x1210 : 
    char test[2]; 
    test[0] = 0x12; 
    test[1] = 0x10; 

    unsigned short n; 
    memcpy(&n, test, sizeof(unsigned short)); 

    int i=0, arrToInt=0; 
    for(i=1;i>=0;i--) 
     arrToInt =(arrToInt<<8) | test[i]; 

    /* 
    Now are: 

    n = 4114 
    arrToInt = 4114 

    But! -> 0x1210 == 4624 
    */ 

    return 0; 
} 

有沒有辦法(不含)反轉字符數組?

感謝您的幫助!

+4

擡頭看大,小端。 –

+2

http://en.wikipedia.org/wiki/Endianness,你的號碼存儲在LSB中 – TJD

+0

你真正的問題...反向循環?但看到其他人爲什麼。 – geekosaur

回答

3
for(i=0;i<=1;i++) 
    arrToInt =(arrToInt<<8) | test[i]; 
+0

Yeahh,非常感謝!作品像一個魅力:) –

+0

@SeriousK。 - 我知道我的答案是微不足道的,但如果它對您有所幫助,請點擊左側的複選標記將其選爲最佳答案,並將其變爲綠色。 – phonetagger

相關問題