版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/swty3356667/article/details/84329898
如何修改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;
}