| def dataToHex(d): | |
| """ Convert the raw data in 'd' to an hex string with a space every 4 bytes. | |
| """ | |
| bytes = [] | |
| for i,c in enumerate(d): | |
| byte = ord(c) | |
| hex_byte = hex(byte)[2:] | |
| if byte <= 0xf: | |
| hex_byte = '0' + hex_byte | |
| if i % 4 == 3: | |
| hex_byte += ' ' | |
| bytes.append(hex_byte) | |
| return ''.join(bytes).strip() | |
| def dataToHexUnified(d): | |
| """ Convert the raw data in 'd' to an hex string with a space every 4 bytes. | |
| Each 4byte number is prefixed with 0x for easy sed/rx | |
| Fixme: convert all MC tests to use this routine instead of the above | |
| """ | |
| bytes = [] | |
| for i,c in enumerate(d): | |
| byte = ord(c) | |
| hex_byte = hex(byte)[2:] | |
| if byte <= 0xf: | |
| hex_byte = '0' + hex_byte | |
| if i % 4 == 0: | |
| hex_byte = '0x' + hex_byte | |
| if i % 4 == 3: | |
| hex_byte += ' ' | |
| bytes.append(hex_byte) | |
| return ''.join(bytes).strip() | |
| def HexDump(valPair): | |
| """ | |
| 1. do not print 'L' | |
| 2. Handle negatives and large numbers by mod (2^numBits) | |
| 3. print fixed length, prepend with zeros. | |
| Length is exactly 2+(numBits/4) | |
| 4. Do print 0x Why? | |
| so that they can be easily distinguished using sed/rx | |
| """ | |
| val, numBits = valPair | |
| assert 0 <= val < (1 << numBits) | |
| val = val & (( 1 << numBits) - 1) | |
| newFmt = "0x%0" + "%d" % (numBits / 4) + "x" | |
| return newFmt % val |