Byte Array
Java コードを使用して Cassandra に値を書き込む必要があります。次に、Cassandra からそのバイト配列データを取得し、デシリアライズする C++ プログラムを作成します。
Cassandra に書き込むバイト配列は、以下で説明する 3 つのバイト配列で構成されています。
short employeeId = 32767;
long lastModifiedDate = "1379811105109L";
byte[] attributeValue = os.toByteArray();
ここで、と を一緒に 1 つのバイト配列に書き込みemployeeId
、その結果のバイト配列を Cassandra に書き込みます。次に、そのバイト配列データを Cassandra から取得し、デシリアライズして を抽出する C++ プログラムを作成します。それ。lastModifiedDate
attributeValue
employeeId
lastModifiedDate
attributeValue
Cassandra への書き込み中に Java コードでビッグ エンディアンを使用して、読み戻し中に C++ コードを簡略化する必要があるかどうかわかりません。
Java側で、すべてを単一のバイト配列に書き込みながら特定の形式(ビッグエンディアン)に従っていることを確認しました。その後、このバイト配列も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のことを手伝ってくれる人はいますか? ありがとう..
Byte Buffer を使用するのはこれが初めてであるため、ここで Byte Buffer に関する詳細が欠落している可能性があります..
- まず、私のユース ケースでは、ここで ByteByffer を使用する必要がありますか?
- 第二に、もしそうなら、私のユースケース内でそれを使用する最良の方法は何ですか...?
私が確認しようとしている唯一のことは、ビッグエンディアンのバイトオーダー形式に従ってCassandraに正しく書き込んでいるため、C++側では、そのバイト配列を逆シリアル化しているときにまったく問題に直面していないということです...