【问题标题】:Add Nibble to an array of bytes将 Nibble 添加到字节数组中
【发布时间】:2017-07-27 01:29:48
【问题描述】:

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

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

【问题讨论】:

  • 这在很大程度上取决于您的具体要求。
  • @chrylis,非常感谢您的回复。这是一个要求,我对此感到困惑......如果我需要用半字节填充空间并且半字节是半字节,为什么不用(字节)0填充空间?......我很困惑为什么要使用半字节,除非他们有什么不同,我看不到......
  • 两个小点都应该在最后吗?
  • @JeremyKahan 是的!
  • 这个问题被否决的原因有两个。 1)问题的明显性质表明缺乏研究 2)缺少代码和/或如何实现填充的细节,例如数组末尾的所有零位。

标签: java arrays byte padding nibble


【解决方案1】:

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

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

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

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

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

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

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

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

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

  • 对于一些 8 & half 字节的情况,您实际上应该创建 9 个字节(72 位),但只更新前 68 位(8.5 个字节)。

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

【讨论】:

    【解决方案2】:

    所以您的问题是,与 nibble 0000 相邻的 nibble 0000 是否等于字节 00000000 ?

    是的。

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

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

    【讨论】:

    • 帕特里克,感谢您的回复。不,我想知道为什么在这种情况下使用 Nibbles?这是我第一次遇到 Nibbles,我想知道为什么用 Nibbles 填充空白空间会有所不同......我不明白为什么人们拒绝投票这个问题......
    • @Simplyi 例如,如果您返回 8.5 个字节,那么半字节可能会发挥作用。
    • 我明白了……我正在使用字符串,然后从这些字符串值中提取字节,并且从未遇到过我会得到半字节的情况……无论如何,谢谢帕特里克!
    • @Simplyi 也许您正在使用有限的字符集,该字符集可能只允许使用 4 位对每个字符进行编码。这为您提供了 64 个字符,包括 null (0000)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2017-01-01
    相关资源
    最近更新 更多