Я работаю над домашним заданием для моего класса C ++. Вопрос, над которым я работаю, гласит:
Напишите функцию, которая принимает unsigned short int (2 байта) и заменяет байты. Например, если x = 258 (00000001 00000010) после обмена, x будет 513 (00000010 00000001).
Вот мой код:
#include <iostream>
using namespace std;
unsigned short int ByteSwap(unsigned short int *x);
int main()
{
unsigned short int x = 258;
ByteSwap(&x);
cout << endl << x << endl;
system("pause");
return 0;
}
и
unsigned short int ByteSwap(unsigned short int *x)
{
long s;
long byte1[8], byte2[8];
for (int i = 0; i < 16; i++)
{
s = (*x >> i)%2;
if(i < 8)
{
byte1[i] = s;
cout << byte1[i];
}
if(i == 8)
cout << " ";
if(i >= 8)
{
byte2[i-8] = s;
cout << byte2[i];
}
}
//Here I need to swap the two bytes
return *x;
}
В моем коде есть две проблемы, надеюсь, вы поможете мне решить.
- Почему-то оба моих байта - 01000000
- Я действительно не уверен, как бы я поменял байты. Мои заметки учителей о битовых манипуляциях очень разбиты и им трудно следовать, и они не имеют особого смысла для меня.
Большое спасибо заранее. Я действительно ценю, что вы помогаете мне.