如何在给定的字节索引处从int数组中提取单个字节?

时间:2013-11-09 20:05:35

标签: java c arrays int byte

给定一个整数A的数组,编写C或Java代码,它将从(byte)索引n的数组中提取单个字节,并将其分配给int变量b

这是课堂作业的一部分。我甚至不知道如何开始这个。我是否需要以某种方式将整个int数组转换为字节数组,将其取出,然后将其转换回int?或者我应该考虑数组中的每个整数是4个字节。我将我的字节索引除以4以找出它所在的整数然后从那里开始工作?

我不是在寻找答案,只是一些指导。谢谢!

4 个答案:

答案 0 :(得分:1)

这样做的一种方法是首先找到正确的int,然后使用bitshift正确对齐所需的字节,最后使用二进制和(&)屏蔽整数。

请注意,与Java不同,C没有将int的大小指定为恰好四个字节,因此一个迂腐的C解决方案需要您的程序考虑大于4字节的整数。

我希望这是你想要的那种指导!

答案 1 :(得分:0)

如果我正确地得到了问题,首先你可以利用按位移位运算符>>nth索引数组元素获取单字节,

 int single_element_byte = (number >> (i * 8)) & 0xff; 
 /* Where (0 <= i <= 3) - 0: First byte; 1: Second byte */

其次,您可以遍历每个A索引的数组nth来计算单个字节以上。注意变量的内容可以是大/小端,如果那些被修改,那么你不能保证正确的值。

答案 2 :(得分:0)

如果我理解正确,用户会给你提取字节的位置和数组A中int的索引吗?

如果我这样做,那么你应该从数组中得到给定索引的int值 然后你应该将int值转换为字节数组(byte []),然后获取byte [n]处的值 并将其值转换回int并存储在“b”

答案 3 :(得分:0)

好吧,因为你把它标记为C.我将在C中利用强制转换。

请注意,一个字符是一个字节。

因此我们可以将int数组转换为char *。

然后在任何给定的字节索引处将char *作为数组访问。

有效索引的范围为0到sizeof(int)*(int数组长度)。

哦,因为你需要一个int的答案。只需说出int answer = byteArray [index]

char只是一个int,其最大值为2 ^ 4