嗯,这可能很容易,但我被困住了。
我正在处理一个16位大小的长变量,该变量保存当前小时和分钟的值。
0000 1000 0011 1111
前4位无用;
最后6位是小时,其余代表分钟;
无法更改此变量类型或大小;
这就是我成功获得时间和分钟的方式:
hour = ((int) original_value >> 6) & 0x1F;
minute = ( (int) original_value ) & 0x3F;
如何使用不同的小时和分钟来反转此操作以创建新的original_value
?
答案 0 :(得分:5)
我可能会遗漏一些东西,但这应该可以解决问题:
new_value = (new_hour << 6) | (new_minutes & 0x3f);
虽然正如其他人所指出的那样,您提取hour
的方式可能不对,但您应该AND
使用0x3F
,而不是0x1F
:
hour = ((int) original_value >> 6) & 0x3F;