2012-10-06 39 views
1

我存储在DB中的列值或者作为:检测一个字节缓冲区包含int或只是一个字节[]

  1. 一个空字节数组new byte[0]
  2. int值
  3. 一个非空byte[]

该列的值的检索我检索它作为一个字节缓冲区&我需要检测是否存储的整数,空字节[],或者非空字节[]。

我该如何检测正在读取的字节缓冲区,以上3种可能的选项中存储了哪些内容?

回答

1

你不能,毕竟他们只是一堆比特。你需要一个外部指标。它可以是第二列或输入的第一位。

如果您加载了一个空缓冲区,则存储空的byte[]。如果不是空的,请检查第一位(或简单说明是字节)。同意某些值表示其余值为byte[],而其他值表示编码为int。当然,在此之前,您还必须存储该指标。

+0

可能是通过查看byte []的长度或许!?? int应该有4个字节的长度,不是吗?但4字节的长度不会保证它是否是一个int ..可能是或可能不是.. –

+0

@ user01:正好。所以如果返回的缓冲区是空的,它是一个空的'byte []'。但是4个字节不能表示任何东西,除非你禁止'byte [4]'。 –

+0

假设我将非空字节[]情况的使用限制为长度为1的字节[],那么我也许可以(!?)清楚地检测到3个选项之一? –