خیلی راحت میتونید این کارو انجام بدید با همین IntX:
#include "IntX.h"
#include <iostream>
using namespace std;
int main()
{
int array_i32_count = 8;
__int32 * array_i32 = new __int32[8];
size_t sizeof_array_i32 = sizeof(__int32) * array_i32_count;
char * str = new char[512];
while (true)
{
cin >> str;
IntX_FromHexA( (void *)array_i32, sizeof_array_i32, str);
__int32 i32 = array_i32[0];
array_i32[0] = array_i32[4];
array_i32[4] = i32;
IntX_ToHexA( str, (void *)array_i32, sizeof_array_i32);
cout << str << endl;
};
return 0;
}
شما هر اشاره گری رو میتونید به عنوان عدد بفرستید به توابع IntX. فقط این مهمه که شما خودتون باید اعتبار اشاره گر و سایزش رو کنترل کنید.
توابع IntX از شما اشاره گر میخوان و سایز اطلاعاتتون. شما هم میخواید که قسمت های 32 بیتی داشته باشید. بخاطر همین من یک آرایه ی از __int32 رو تعریف کردم که بتونم قطعات 32 بیتی داشته باشم و اون آرایه رو به تابع IntX_FromHexA فرستادم برای تبدیل از متن هگزادسیمال به عدد و بعد جای دوتا عضو آرایه رو عوض کردم و بعد از تابع IntX_ToHexA استفاده کردم تا دوباره عدد رو به متن هگزادسیمال تبدیل کنم. میتونید به جای هگزادسیمال از ده دهی با تابع IntX_ToStr استفاده کنید.
با خوده توابع IntX هم میتونید شیفت بدید عدد رو و یا دو تا عدد رو با هم Or یا And کنید.