summaryrefslogtreecommitdiff
path: root/python/metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/metadata.py')
-rw-r--r--python/metadata.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/python/metadata.py b/python/metadata.py
index 606e4ceb..546a473c 100644
--- a/python/metadata.py
+++ b/python/metadata.py
@@ -42,9 +42,11 @@ class Metadata(object):
self.handle = core.BNCreateMetadataUnsignedIntegerData(value)
elif isinstance(value, bool):
self.handle = core.BNCreateMetadataBooleanData(value)
- elif isinstance(value, str):
+ elif isinstance(value, (str, bytes)):
if raw:
- buffer = (ctypes.c_ubyte * len(value)).from_buffer_copy(value.encode('charmap'))
+ if isinstance(value, str):
+ value = bytes(bytearray(ord(i) for i in value))
+ buffer = (ctypes.c_ubyte * len(value)).from_buffer_copy(value)
self.handle = core.BNCreateMetadataRawData(buffer, len(value))
else:
self.handle = core.BNCreateMetadataStringData(value)
@@ -68,7 +70,7 @@ class Metadata(object):
if self.is_integer:
return int(self)
elif self.is_string or self.is_raw:
- return str(self)
+ return bytes(self)
elif self.is_float:
return float(self)
elif self.is_boolean:
@@ -189,6 +191,9 @@ class Metadata(object):
raise ValueError("Metadata object not a string or raw type")
+ def __bytes__(self):
+ return bytes(bytearray(ord(i) for i in self.__str__()))
+
def __int__(self):
if self.is_signed_integer:
return core.BNMetadataGetSignedInteger(self.handle)