GDB Python довольно принтер Uint64_t интерпретируется со знаком
Когда я пытаюсь использовать:
class MyPrinter:
def __init__(self, val):
self.val = val
def to_string(self):
return str(self.val['fData'][0]) + ":" + "%016x" % (self.val['fData'][0]).cast(gdb.lookup_type("uint64_t"))
Это печатает2929725441843584891:28a879c45a82df7b
Но также9918728419520062851:-7659990ddaef5a7d
Когда самый старший бит установлен для val
, это интерпретируется как подписанный.
fData[]
является uint64_t
,
Как я могу избежать этого? Все мои ценности должны быть без знака.
1 ответ
По крайней мере, в качестве обходного пути это работает для меня:
class MyPrinter:
def __init__(self, val):
self.val = val
def to_hex(self, val):
s = ''
x = 7
while (x >= 0):
s = s + "%02x" % ((val>>(x*8))&255)
x -= 1
return s
def to_string(self):
return self.to_hex(self.val['fData'][0]) + self.to_hex(self.val['fData'][1])