【问题标题】:write single byte using parcelbale in java在java中使用parcelbale写入单字节
【发布时间】:2017-06-27 01:05:11
【问题描述】:

我试图将一个 parcelable 对象转换为字节数组,并且在我的类中我有一个字节类型的值。但是当我使用 parcelable 单字节编组它时,在字节数组中分配了 4 个字节。在代码中,我发现 parcel.writeByte 在内部调用了 writeInt。有什么方法可以将单个字节写入 parcelable 吗?

任何帮助表示赞赏。

【问题讨论】:

  • 不,即使您想使用writeValue 写入一个布尔值(即一位),一个整数也会写入Parcel
  • @pskink 不过,这应该不是问题。 stackoverflow.com/questions/6201311/…
  • @cricket_007 仍写入 4 个字节
  • @upv 你能解释一下,你为什么需要那个?从内存或性能的角度来看,存储单个字节并不是有利的:所有现代硬件都针对 32 位进行了优化,因此处理较小大小的值实际上可能有点。此外,包括包裹存储本身在内的大多数缓冲区/数组等很可能会按 4+ 字节对齐,因此如果您一次存储

标签: java android parcelable


【解决方案1】:

AFAIK,使用任何当前可用的公共 API 都无法向 Parcel 写入少于 4 个字节。

如果最多有 4 个字节,则可以使用 ByteBuffer/bit shift 到 store them in the single integer value。您还可以在字节数组中存储任意数量的字节(包括单个字节)。这样做可以让您实现任何理想的内存布局,但会产生额外 4 个字节的开销来存储数组长度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2016-09-01
    • 2015-07-05
    相关资源
    最近更新 更多