我需要Byte Array
使用 Java 代码将值写入 Cassandra。然后我将拥有我的 C++ 程序,该程序将从 Cassandra 检索该字节数组数据,然后将其反序列化。
我将写入 Cassandra 的字节数组由三个字节数组组成,如下所述 -
short employeeId = 32767;
long lastModifiedDate = "1379811105109L";
byte[] attributeValue = os.toByteArray();
现在,我将employeeId
,lastModifiedDate
和attributeValue
一起写入单个字节数组,然后将生成的字节数组写入 Cassandra,然后我将拥有我的 C++ 程序,该程序将从 Cassandra 检索该字节数组数据,然后将其反序列化以提取employeeId
,lastModifiedDate
并attributeValue
从中提取它。
我不确定在写入 Cassandra 时是否应该在我的 Java 代码中使用 Big Endian,以便 C++ 代码在读回时得到简化?
我在 Java 端进行了尝试,以确保它遵循某种格式(Big Endian),同时将所有内容写入单个字节数组,然后这个字节数组也将被写回 Cassandra,但不确定这是否正确或不是?
public static void main(String[] args) throws Exception {
String os = "Byte Array Test";
byte[] attributeValue = os.getBytes();
long lastModifiedDate = 1379811105109L;
short employeeId = 32767;
ByteArrayOutputStream byteOsTest = new ByteArrayOutputStream();
DataOutputStream outTest = new DataOutputStream(byteOsTest);
// merging everything into one Byte Array here
outTest.writeShort(employeeId);
outTest.writeLong(lastModifiedDate);
outTest.writeInt(attributeValue.length);
outTest.write(attributeValue);
byte[] allWrittenBytesTest = byteOsTest.toByteArray();
// initially I was writing allWrittenBytesTest into Cassandra...
ByteBuffer bb = ByteBuffer.wrap(allWrittenBytesTest).order(ByteOrder.BIG_ENDIAN);
// now what value I should write into Cassandra?
// or does this even looks right?
// And now how to deserialize it?
}
任何人都可以在这里帮我解决这个 ByteBuffer 的问题吗?谢谢..
我可能在这里遗漏了有关字节缓冲区的详细信息,因为这是我第一次使用它。
- 首先,我应该在我的用例中使用 ByteByffer 吗?
- 其次,如果是,那么在我的用例中使用它的最佳方式是什么......?
我唯一要确保的是,我通过遵循 Big-Endians 字节顺序格式正确写入 Cassandra,这样在 C++ 端,我在反序列化该字节数组时根本不会遇到任何问题......