|  | 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 |