我有一個問題轉換爲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;
}
有沒有辦法(不含)反轉字符數組?
感謝您的幫助!
擡頭看大,小端。 –
http://en.wikipedia.org/wiki/Endianness,你的號碼存儲在LSB中 – TJD
你真正的問題...反向循環?但看到其他人爲什麼。 – geekosaur