Parsing¶
Currently, bread
can parse data contained in strings, byte arrays, or
files. In all three cases, data parsing is done with the function parse(data, spec)
.
An example of parsing files:
import bread as b
format_spec = [...]
with open('raw_file.bin', 'rb') as fp:
parsed_obj = b.parse(fp, format_spec)
An example with byte arrays and strings:
import bread as b
format_spec = [("greeting", b.string(5))]
bytes = bytearray([0x68, 0x65, 0x6c, 0x6c, 0x6f])
string = "hello"
parsed_bytes = b.parse(bytes, format_spec)
parsed_string = b.parse(string, format_spec)
Parsed Object Methods¶
Objects produced by bread can produce JSON representations of
themselves. Calling the object’s as_json()
method will produce its data as
a JSON string.
Objects produced by bread can also produce representations of themselves as
Pythonic list
s, dict
s, etc. Calling the object’s as_native()
method will produce its data in this form.
Creating Empty Objects¶
Sometimes, you want to write a binary format without having to read anything
first. To do this in Bread, you can use the function new(spec)
.
Here’s an example of new()
in action:
format_spec = [("greeting", b.string(5)),
("age", b.nibble)]
empty_struct = b.new(format_spec)
empty_struct.greeting = 'hello'
empty_struct.age = 0xb
output_bytes = b.write(empty_struct)