0

char ポインターが入力として渡される関数があります。char ポインターによって渡された入力を unsigned char に渡すと、正常に動作します。しかし、unsigned char は 1 バイトの長さなので、1 バイトの長さの値しか取得できませんでした。しかし、今は変数に 4 バイトの長さの入力を取らなければなりません。

私の機能は次のとおりです。

void charPointer (char* aBinary)
{
    unsigned char aByte = '\0';

    memcpy(&aByte, &(aBinary[0]), 1);

    m1 = static_cast<short>(aSingleByte);
}

どうすればいいですか?

4

3 に答える 3

1

それは十分に単純です

unsigned char fourBytes[4];
memcpy(fourBytes, aBinaryIPAddress, 4);
于 2013-11-05T16:23:11.907 に答える
0

あなたの場合、次のことを試すことができます。

int abc = *((const int *)fourBytes);

ただし、のバイト順fourBytesが異なる場合は、次のように各バイトを手動で整数にコピーする必要があります。

int addr;
addr = 0;
addr = aBinaryIPAddress[0];
addr = (addr << 8)|aBinaryIPAddress[1];
addr = (addr << 8)|aBinaryIPAddress[2];
addr = (addr << 8)|aBinaryIPAddress[3];

次の方法でも実行できます

int addr;
memcpy(&addr, aBinaryIPAddress, numbytes); //numbytes = 4

short長さは 2 バイトであることに注意してください。

于 2013-11-05T16:29:42.073 に答える