我正在做一项家庭作业,以打印出 and 的大端和小端int
值float
。我无法转换为小端。
这是我的代码
void convertLitteE(string input)
{
int theInt;
stringstream stream(input);
while(stream >> theInt)
{
float f = (float)theInt;
printf("\n%d\n",theInt);
printf("int: 0x");
printLittle((char *) &theInt, sizeof(theInt));
printf("\nfloat: 0x");
printLittle((char *) &f, sizeof(f));
printf("\n\n");
}
}
void printLittle(char *p, int nBytes)
{
for (int i = 0; i < nBytes; i++, p++)
{
printf("%02X", *p);
}
}
当输入为 12 时,我得到了我所期望的
output:
int: 0x0C000000
float: 0x00004041
但是当输入是 1234
output:
int: 0xFFFFFFD20400000
float: 0x0040FFFFFFF9A44
但我希望
int : 0xD2040000
float: 0x00409A44
当我单步执行for
循环时,我可以看到哪里有垃圾值,然后它会打印所有的F
's 但我不知道为什么。我已经尝试了很多不同的方法,但我无法让它发挥作用。
任何帮助将不胜感激。