我试图将一个单字节值存储到int中的一个位置,但是,我很难弄清楚这是如何做到的。我已经将要存储在int中的字节移到了正确的值,但是我不知道如何将它与值结合起来。
public static int ibyteToInt(int b, int pos, int val)
{
return ((b & 0xff) << (8 * pos)) ??;
}
最简单的解决方案是将int中的另外3个字节解包,然后将4个字节重新组合成int,但这当然不是很有效。
public static int bytesToInt(byte a, byte b, byte c, byte d)
{
return ((a & 0xff) << 0) | ((b & 0xff) << 8) | ((c & 0xff) << 16) | ((d & 0xff) << 24);
}
1条答案
按热度按时间ylamdve61#
另一个简单的解决方案是清除目标字节,然后输入新值:
这与如何在c#中执行相同的操作非常相似,但java需要
& 0xFF
防止标志延伸byte
. 如果“byte”是介于0和255之间的值,并作为int
,则不需要该步骤。