-1

我在 Java 中有一个 9 字节的数组,但我的函数需要返回一个大小为 10 的数组。我需要用 Nibbles 填充差异。

如果一个半字节是一个字节的一半,我可以简单地在最后添加一个(字节)0 到数组中,还是添加 2 个半字节会有所不同?在这种情况下,2 个半字节和一个(字节)0 之间有区别吗?

4

2 回答 2

1

所以你的问题是,与 nibble 0000 相邻的 nibble 0000 是否等于 byte 00000000 ?

是的。

当您像这样写下各个位时,我认为应该很明显。

仅当您使用部分字节存储数据时,才会需要使用部分字节进行填充。例如,假设我将字符集限制为仅 az、AZ、0-9 和空格字符。这将使我能够只使用 4 位来编码每个字符。

于 2017-03-07T00:51:45.323 回答
1

如果一个半字节是一个字节的一半,我可以简单地在最后添加一个(字节)0 到数组中,还是添加 2 个半字节会有所不同?

在这种情况下,2 个半字节和一个(字节)0 之间有区别吗?

没有区别,因为一个字节(8 位)由 2半字节(4 位)组成。

我什至可以将 8.5 位放入一个字节数组中,然后检查数组的“长度”并取回 8.5 作为值吗?

对于 8.5 位?此时它将以 2 个字节的长度返回。如果您的意思是 8.5 个字节,那么它会以 9 个字节返回。

记住最小的数据类型是 a bytenot a nibble!! 通过声明一个类型byte(即使没有分配值),您已经自动生成了 8 位0000 0000. 半字节只是更容易可视化字节值中的位(当以十六进制表示法编写时)。

例如,单字节值0xF0可以可视化为1111 0000. 现在对于一个字节0xBA,如果您只想要一个半字节,则必须将字节设置为0x0Bor 0x0A...

我在 Java 中有一个 9 字节的数组,但我的函数需要返回一个大小为 10 的数组。我需要用 Nibbles 填充差异。

您的函数返回 80 位。使用 9 个字节,您总共将拥有 72 位,因此您可以使用额外的 8 位进行填充,这意味着增加一个字节的额外zero值(例如:)0x00

  • 在某些8 字节和半字节的情况下,您实际上应该创建 9 字节(72 位),但只更新前 68 位(8.5 字节)。

  • 最好的逻辑是只声明一个长度为 10 的字节数组(即: 80 个零位)。然后,您可以在此总分配空间内根据需要更新尽可能多或尽可能少的位。
    这样,“我有一个 9 个字节的数组”变成了“我创建了一个 10 个字节的数组,并且只更新了 9 个甚至 8.5 个字节”,这使您可以自动填充那些未使用的 1 个或 1.5 个字节。

于 2017-03-12T19:55:04.207 回答