将整数转换为char数组(byte)

时间:2013-04-07 02:32:34

标签: int

更新 我可以很容易地从字节到整数,但是我现在这样做的方式似乎没有那么好。

这是我目前的代码:

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(签名的int)时输出:FF FF FF FF

有什么想法吗?感谢帮助:)

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

www.cplusplus.com/reference/cstdlib/itoa/ 它将int转换为char。例: int test; char buffer[33]; itoa(test, buffer, 10)。您需要包含stdlib.h。