【问题标题】:How would I extract a single byte from an int array at a given byte index?如何从给定字节索引处的 int 数组中提取单个字节?
【发布时间】:2013-11-09 20:05:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: java c arrays int byte


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果我答对了,首先你可以使用位移运算符>>nth索引数组元素中获取单个字节,

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          注意一个字符就是一个字节。

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

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-10
            • 2015-04-14
            • 2019-12-13
            • 2019-08-15
            • 1970-01-01
            相关资源
            最近更新 更多