我正在做家庭作業,以打印出int
和float
的大和小端值。我很難轉換成小端。從大轉換到小端C++
這裏是我的代碼
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,但我不知道爲什麼。我嘗試了這麼多種不同的方式,但我無法實現它。
任何幫助將不勝感激。
我使用的字符串,因爲我們必須要能夠一次在多個號碼進入。所以我只是使用getline,然後從字符串中獲取數字值。 –
這是什麼語言? C++?你需要用正在使用的語言來標記你的問題。 – jwodder
@Jeff它看起來像'convertLitteE'應該從十進制字符串轉換爲小端的十六進制輸出。該部分沒有根本問題。 – aschepler