0

更新: 我可以很容易地从字节到整数,但我目前的做法似乎不太好。

这是我当前的代码:

static unsigned char* Int32ToBytes(signed int n)
{
    unsigned char bytes[4];
    for(int i = 0;i<4;i++)
        bytes[3-i] = (n & (255 << (i*8))) >> (i*8);
    return bytes;
}

我用它来写字节:

fwrite(Int32ToBytes(-1), 1 , 4 , file );

它正在输出:FB 9C 8B 28当我希望它输出时FF FF FF FF(有符号整数)。

有任何想法吗?帮助表示赞赏:)

4

2 回答 2

0

这似乎对我 有用http://ideone.com/o6Llf9

void process(int x)
{
    for(int i = 0;i<4;i++)
    {
        unsigned char res = (x & (255 << (i*8))) >> (i*8);
        printf("%x " ,res);
    }
}

int main()
{
    int n;
    while (scanf("%d",&n)!=EOF) process(n);
    return 0;
}

像这样的东西也可以

for(int i = 0;i<4;i++)
{
     bytes[3-i] = n & 255
     n = n >> 8
}
于 2013-04-07T02:52:12.463 回答
0

www.cplusplus.com/reference/cstdlib/itoa/ 它把 int 变成 char。示例: int test; char buffer[33]; itoa(test, buffer, 10)。您需要包含 stdlib.h。

于 2013-04-07T02:57:01.953 回答