1. 程式人生 > >如何修改int型別的第二個位元組

如何修改int型別的第二個位元組

如何修改int型別的第二個位元組?

思路:重點在於分離int的四個位元組,取出第二個位元組,可以藉助memmove來實現,因為memmove更安全,原因參考上一篇部落格。首先使用memmove將int記憶體中的內容拷貝到字元數粗中,然後在陣列中修改某個位元組的值,然後再把陣列中的值返回到int中。

#include<string.h>
#include<iostream>
using namespace std;
#define MAX 5

int main()
{
    int buf[MAX] = {0};
    int p1 = 0;
    int q1 = 0;
    cin>>p1;

    memcpy(buf,&p1,sizeof(int));
    cout<<"原來的陣列:"<<endl;
    for(int i = 0;i< MAX;++i)
    {
         cout<<hex<<(int)buf[i]<<" ";//hex是將int型轉換成十六進位制
    }
    cout<<endl;

    buf[1] = 1;//修改第二個位元組
    cout<<"修改後的陣列"<<endl;
    
    for(int i = 0;i<MAX;i++)
    {
         cout<<hex<<(int)buf[i]<<" ";
    }
    cout<<endl;

    memcpy(&p2,buf,sizeof(int));
    cout<<dec<<"最終的結果int"<<p2<<endl;
}