Я пытался преобразовать один из методов из хеш-кварка, который изначально был из языка c, и я пытаюсь изменить его на python, этот метод используется для отображения текущего состояния хэша, и я обнаружил проблему, заключающуюся в том, чтомой вывод, Python один, дает только вывод с двоичным, и вывод, который я ожидал, это все, кроме двоичного, и как мне преобразовать его?или есть какой-то другой способ манипулировать им?
код с python
def showstate(x):
i = 0
buf = 0
width = 17
#print (x)
while i < 8 * width:
buf ^= (1 & x[i] << (7 - (i%8)))
#my_hex = buf.decode('hex')
#print ("%d"%buf, end = '')
if (((i%8) == 7) and (i)):
#print (" ".join(hex(ord(n)) for n in buf))
#a = int(str(buf), 2)
#print(a)
print("%02x"%buf, end = '')
buf = 0
i += 1
#print(x)
#print ("/n")
вывод с python
ENTER PERMUTE
0000000001000101000100010001010100
PERMUTE DONE
0000000001000101010100000100010101
EXTRACTED ONE BYTE
ENTER PERMUTE
0000000001000101010100000100010101
PERMUTE DONE
0000000001000101010100000101000100
EXTRACTED ONE BYTE
код с c
void showstate( u32 * x ) {
int i;
u8 buf=0;
for(i=0;i<8*WIDTH;++i) {
buf ^= (1&x[i])<<(7-(i%8));
/*printf("%d",buf);*/
if (((i%8)==7) && (i)) {
printf("%02x",buf); /*panjang nya 2 digit, kalau cuma satu digit diisi 0 */
buf=0;
}
}
printf("\n");
printf("%d", buf);
printf("\n");
}
вывод из c является правильным, где выход имеет фиксированную длину значения и случайное число
спасибо, ребята