将 Nibble 添加到字节数组
Add Nibble to an array of bytes
我在 Java 中有一个 9 字节的数组,但我的函数需要 return 一个大小为 10 的数组。我需要用半字节填充差异。
如果一个半字节是一个字节的一半,我可以简单地在数组末尾添加一个(字节)0 还是添加 2 个半字节会有不同?在这种情况下,2 个半字节和一个(字节)0 之间有区别吗?
所以你的问题是与半字节 0000 相邻的半字节 0000 是否等于字节 00000000?
是的。
当你像这样写下各个位时,我认为它应该是显而易见的。
仅当您使用部分字节存储数据时,才会需要使用部分字节进行填充。例如,假设我将我的字符集限制为仅 a-z、A-Z、0-9 和 space 字符。这将使我能够仅使用 4 位来编码每个字符。
If a nibble is a half of a byte, can I simply add a (byte) 0 to an
array at the end or adding 2 nibbles instead will make a difference?
Is there a difference between 2 nibbles and a (byte) 0 in this case?
不,没有区别,因为一个字节(8 位)由 2 x 个半字节(4 位)组成。
Can I even put 8.5 bits into an array of bytes and then check the
array for "length" and get back 8.5 as value?
对于 8.5 位?此时它将作为 2 个字节的长度返回。如果您指的是 8.5 个字节,则返回为 9 个字节。
记住 最小的数据类型是 byte
而不是 nibble
!!通过声明一个类型 byte
(即使没有赋值)你已经自动生成了 8 位的 0000 0000
。半字节只是让字节值中的位更容易可视化(当以十六进制表示法编写时)。
例如,单字节值 0xF0
可以可视化为 1111 0000
的两个半字节。现在对于一个字节 0xBA
,如果您只想要一个半字节,则必须将该字节设置为 0x0B
或 0x0A
...
I have an array of 9 bytes in Java but my function need to return an
array of size 10. The difference I need to pad with Nibbles.
你的函数 returns 80 位。如果使用 9 个字节,您将拥有总共 72 位,因此您可以额外填充 8 位,这意味着要额外添加一个字节的 zero
值(例如:0x00
)。
在某些 8 & half 字节的情况下,您实际上应该创建 9 个字节(72 位)但只更新前 68 位(8.5 字节) .
最好的逻辑是只声明一个长度为 10 的字节数组(即: 80 个零位)。然后,您可以根据需要在分配的总数 space 内更新尽可能多或尽可能少的位。
这样 "I have an array of 9 bytes" 就变成了 "I create an array of 10 bytes and only update 9 or even 8.5 bytes" 这让你可以自动填充那些未使用的 1 或 1.5 bytes.
我在 Java 中有一个 9 字节的数组,但我的函数需要 return 一个大小为 10 的数组。我需要用半字节填充差异。
如果一个半字节是一个字节的一半,我可以简单地在数组末尾添加一个(字节)0 还是添加 2 个半字节会有不同?在这种情况下,2 个半字节和一个(字节)0 之间有区别吗?
所以你的问题是与半字节 0000 相邻的半字节 0000 是否等于字节 00000000?
是的。
当你像这样写下各个位时,我认为它应该是显而易见的。
仅当您使用部分字节存储数据时,才会需要使用部分字节进行填充。例如,假设我将我的字符集限制为仅 a-z、A-Z、0-9 和 space 字符。这将使我能够仅使用 4 位来编码每个字符。
If a nibble is a half of a byte, can I simply add a (byte) 0 to an array at the end or adding 2 nibbles instead will make a difference?
Is there a difference between 2 nibbles and a (byte) 0 in this case?
不,没有区别,因为一个字节(8 位)由 2 x 个半字节(4 位)组成。
Can I even put 8.5 bits into an array of bytes and then check the array for "length" and get back 8.5 as value?
对于 8.5 位?此时它将作为 2 个字节的长度返回。如果您指的是 8.5 个字节,则返回为 9 个字节。
记住 最小的数据类型是 byte
而不是 nibble
!!通过声明一个类型 byte
(即使没有赋值)你已经自动生成了 8 位的 0000 0000
。半字节只是让字节值中的位更容易可视化(当以十六进制表示法编写时)。
例如,单字节值 0xF0
可以可视化为 1111 0000
的两个半字节。现在对于一个字节 0xBA
,如果您只想要一个半字节,则必须将该字节设置为 0x0B
或 0x0A
...
I have an array of 9 bytes in Java but my function need to return an array of size 10. The difference I need to pad with Nibbles.
你的函数 returns 80 位。如果使用 9 个字节,您将拥有总共 72 位,因此您可以额外填充 8 位,这意味着要额外添加一个字节的 zero
值(例如:0x00
)。
在某些 8 & half 字节的情况下,您实际上应该创建 9 个字节(72 位)但只更新前 68 位(8.5 字节) .
最好的逻辑是只声明一个长度为 10 的字节数组(即: 80 个零位)。然后,您可以根据需要在分配的总数 space 内更新尽可能多或尽可能少的位。
这样 "I have an array of 9 bytes" 就变成了 "I create an array of 10 bytes and only update 9 or even 8.5 bytes" 这让你可以自动填充那些未使用的 1 或 1.5 bytes.