0
:Pythonでバイナリ文字列ubyte flatbufferのベクトルからデータをフィードするには?私が言及したフィールドを持つテーブルを以下している
table Blob {
name : string;
size : ulong;
data : [ubyte];
}
そして、APIを以下には、今私はdata
ベクトルにそのデータを埋めるためにしたい、私はバイナリstirng bin_data
を持って
def BlobStart(builder): builder.StartObject(3)
def BlobAddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0)
def BlobAddSize(builder, size): builder.PrependUint64Slot(1, size, 0)
def BlobAddData(builder, data): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(data), 0)
def BlobStartDataVector(builder, numElems): return builder.StartVector(1, numElems, 1)
def BlobEnd(builder): return builder.EndObject()
そして、それに加えて生成されますBlobのどうやってするか ?私は、コードの一部、以下のいる
:バイトの配列にバイナリデータを供給するためにどのように、助けを求めて
builder.PrependByte(blob_data[i])
File "build/bdist.linux-x86_64/egg/flatbuffers/builder.py", line 544, in PrependByte
File "build/bdist.linux-x86_64/egg/flatbuffers/builder.py", line 472, in Prepend
File "build/bdist.linux-x86_64/egg/flatbuffers/builder.py", line 627, in Place
File "build/bdist.linux-x86_64/egg/flatbuffers/number_types.py", line 148, in enforce_number
TypeError: bad number for type uint8
:上記のコードスニペットで
blobName = builder.CreateString(blob_name)
Blob.BlobStartDataVector(builder, len(blob_data))
for i in reversed(range(0, len(blob_data))):
builder.PrependByte(blob_data[i]) #Error here
blob_bin_data = builder.EndVector(len(blob_data))
Blob.BlobStart(builder)
Blob.BlobAddName(builder, blobName)
Blob.BlobAddSize(builder, 30) #for example size is 30
Blob.BlobAddData(builder, blob_bin_data)
binaryBlob = BlobEnd(builder)
を、私は次のエラーを取得します?
のような値にすることができます。すべての値は[0,255]にあります。 –
私は、bin_dataをarr = bytearray(bin_data)に変換し、それが動作するarrを繰り返しますが、バイナリデータを 'data'にコピーしたいと思います。 –