【发布时间】:2016-01-20 23:00:30
【问题描述】:
我有以下代码-
int main ()
{
unsigned int u4Val = 0xAABBCCDD;
unsigned char u1User_Val = 0x00;
int Byte_Location = 0;
printf ("\n %08X \n", val);
printf ("\n Enter Byte Location : ");
scanf ("%d", &Byte_Location); /* Get - 0 or 1 or 2 or 3 */
printf ("\n Enter Value to Write : ");
scanf ("%02X", &u1User_Val);
/*====== Code to Write on the Byte Location in u4Val ======*/
printf ("\n %08X \n", u4Val);
return 0;
}
示例 IO
-
案例一:
输入:Byte_Location = 0 和 Value = 0x54
输出:0x54BBCCDD
-
案例 2:
输入:Byte_Location = 1 和 Value = 0x21
输出:0xAA21CCDD
-
案例 3:
输入:Byte_Location = 2 和 Value = 0xFB
输出:0xAABBFBDD
-
案例 4:
输入:Byte_Location = 3 和 Value = 0x32
输出:0xAABBCC32
请帮我编写待处理部分的代码。提前致谢。
【问题讨论】:
-
转换为
char*并使用下标运算符。不过请注意字节顺序。 -
@cad 一个更干净、更便携的解决方案是 bitshift/mask。
-
@EugeneSh。是的,很好。
标签: c algorithm bit-manipulation