diff --git a/bson/binary.py b/bson/binary.py index 47c52d4892..96b61b6dab 100644 --- a/bson/binary.py +++ b/bson/binary.py @@ -432,7 +432,7 @@ def from_vector( raise NotImplementedError("%s not yet supported" % dtype) metadata = struct.pack(" BinaryVector: @@ -454,7 +454,7 @@ def as_vector(self) -> BinaryVector: if dtype == BinaryVectorDtype.INT8: dtype_format = "b" - format_string = f"{n_values}{dtype_format}" + format_string = f"<{n_values}{dtype_format}" vector = list(struct.unpack_from(format_string, self, position)) return BinaryVector(vector, dtype, padding) @@ -465,13 +465,16 @@ def as_vector(self) -> BinaryVector: raise ValueError( "Corrupt data. N bytes for a float32 vector must be a multiple of 4." ) - vector = list(struct.unpack_from(f"{n_values}f", self, position)) + dtype_format = "f" + format_string = f"<{n_values}{dtype_format}" + vector = list(struct.unpack_from(format_string, self, position)) return BinaryVector(vector, dtype, padding) elif dtype == BinaryVectorDtype.PACKED_BIT: # data packed as uint8 dtype_format = "B" - unpacked_uint8s = list(struct.unpack_from(f"{n_values}{dtype_format}", self, position)) + format_string = f"<{n_values}{dtype_format}" + unpacked_uint8s = list(struct.unpack_from(format_string, self, position)) return BinaryVector(unpacked_uint8s, dtype, padding) else: