Skip to content

Instantly share code, notes, and snippets.

@kekiefer
Last active September 16, 2020 17:56
Show Gist options
  • Save kekiefer/5f0309d5221df05aa3212245b9aa8480 to your computer and use it in GitHub Desktop.
Save kekiefer/5f0309d5221df05aa3212245b9aa8480 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
"""
Test packed format conversion
"""
import sys
import struct
try:
import numpy as np
except ImportError:
print("This tool requires package 'numpy'. Try: 'pip3 install numpy'")
sys.exit(1)
try:
import mif
except ImportError:
print("This tool requires package 'mif'. Try: 'pip3 install mif'")
sys.exit(1)
def main():
"""main"""
expected_integer = 1920
bindata = struct.pack(
"<I", expected_integer
)
npdata = np.frombuffer(bindata, dtype=np.ubyte).reshape((-1, 4))
result_integer1 = int.from_bytes(bytes(npdata[0]), byteorder="little")
if expected_integer != result_integer1:
print("Assertion fail!")
sys.exit(1)
mifstr = mif.dumps(npdata, packed=True, data_radix="HEX")
_, data = mif.loads(mifstr, packed=True)
result_integer2 = int.from_bytes(bytes(data[0]), byteorder="little")
print("Expect:", expected_integer)
print("Actual:", result_integer2)
if expected_integer != result_integer2:
print("Fail")
sys.exit(1)
print("Pass")
if __name__ == "__main__":
main()
@kekiefer
Copy link
Author

kekiefer commented Sep 16, 2020

I made a mistake in the original version, setting dtype=np.byte, which is a signed character. This works correctly now with dtype=np.ubyte.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment