更新 我可以很容易地从字节到整数,但是我现在这样做的方式似乎没有那么好。
这是我目前的代码:
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
。
有什么想法吗?感谢帮助:)
答案 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。