0

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

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

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

4

4 回答 4

1

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

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

我希望这是您想要的指导!

于 2013-11-09T20:35:02.300 回答
0

如果我得到正确的问题,首先您可以使用按位移位运算符从索引数组元素中>>获取单个字节,nth

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

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

于 2013-11-09T20:34:58.177 回答
0

如果我理解正确,用户会为您提供要提取的字节位置和数组 A 中 int 的索引?

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

于 2013-11-09T20:35:31.597 回答
-1

好吧,既然您将其标记为 C。我将利用 C 中的转换。

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

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

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

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

哦,因为您需要 int 中的答案。只需说 int answer = byteArray[index]

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

于 2014-02-26T19:35:09.163 回答