2

我在将 char 数组转换为 unsigned short (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;
}

有没有办法(不)反转 char 数组?

谢谢你的帮助!

4

1 回答 1

3
for(i=0;i<=1;i++)
    arrToInt =(arrToInt<<8) | test[i];
于 2012-05-04T21:49:19.780 回答