给定一个 int 数组A
,编写 C 或 Java 代码,从 (byte) 索引处的数组中提取一个字节n
并将其分配给一个 int 变量b
。
这是课堂作业的一部分。我什至不知道如何开始。我是否需要以某种方式将整个 int 数组转换为字节数组,将其取出,然后将其转换回 int?或者我应该认为数组中的每个整数都是 4 个字节。我会将我的字节索引除以 4 以找出它在哪个整数中,然后从那里开始工作?
我不是在寻找答案,只是一些指导。谢谢!
一种方法是首先找到正确的 int,然后使用 bitshift 正确对齐所需的字节,最后用二进制和 ( &
) 屏蔽整数。
请注意,与 Java 不同,C 并未将 的大小指定int
为正好四个字节,因此迂腐的 C 解决方案将要求您的程序考虑大于 4 字节的整数。
我希望这是您想要的指导!
如果我得到正确的问题,首先您可以使用按位移位运算符从索引数组元素中>>
获取单个字节,nth
int single_element_byte = (number >> (i * 8)) & 0xff;
/* Where (0 <= i <= 3) - 0: First byte; 1: Second byte */
其次,您可以遍历数组A
每个nth
索引以计算单个字节以上。请注意,变量的内容可以是大/小端,如果这些被修改,那么您不能保证正确的值。
如果我理解正确,用户会为您提供要提取的字节位置和数组 A 中 int 的索引?
如果我这样做了,那么您应该从数组中获取给定索引处的 int 值,然后您应该将 int 值转换为字节数组(byte []),然后获取 byte [n] 处的值并将其值转换回来int 并存储在“b”中
好吧,既然您将其标记为 C。我将利用 C 中的转换。
请注意,一个字符是一个字节。
所以我们可以将 int 数组转换为 char*。
然后在任何给定的字节索引处将 char* 作为数组访问。
有效索引的范围从 0 到 sizeof( int ) * (int 数组长度)。
哦,因为您需要 int 中的答案。只需说 int answer = byteArray[index]
char 只是一个 int,最大值为 2^4