def decode(self, data, parent=None, name=None, little_endian=False): self._verify_not_little_endian(little_endian) container = self._get_struct(name, parent) a = to_tbcd_value(data) index = 0 for field in self._fields.values(): field_length = field.length.decode(container, len(data) * 2 - index) container[field.name] = Field(field.type, field.name, to_tbcd_binary(a[index:index + field_length])) index += field_length return container
def _default_presentation_format(self, value): return to_tbcd_value(value)
def test_to_tbcd_value(self): self.assertEquals("1", to_tbcd_value(to_bin("0b11110001"))) self.assertEquals("11", to_tbcd_value(to_bin("0b00010001"))) self.assertEquals("2", to_tbcd_value(to_bin("0b11110010"))) self.assertEquals("23", to_tbcd_value(to_bin("0b00110010"))) self.assertEquals("123", to_tbcd_value(to_bin("0b0010000111110011")))
def _default_presentation_format(self, value): return to_tbcd_value(value)
def test_to_tbcd_value(self): self.assertEquals('1', to_tbcd_value(to_bin('0b11110001'))) self.assertEquals('11', to_tbcd_value(to_bin('0b00010001'))) self.assertEquals('2', to_tbcd_value(to_bin('0b11110010'))) self.assertEquals('23', to_tbcd_value(to_bin('0b00110010'))) self.assertEquals('123', to_tbcd_value(to_bin('0b0010000111110011')))