python - 按位运算后的python数据类型(来自c语言)
问题描述
我一直在尝试将其中一种方法从散列夸克转换为原来的 c 语言,并且我试图将其更改为 python,此方法用于显示哈希的当前状态,我发现我的输出有一个问题, pytho 一个,只给出二进制的输出,而我期望的输出是二进制以外的所有内容,我如何转换它?还是有其他方法可以操纵它?
来自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")
蟒蛇的输出
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 的输出是正确的,其中输出具有固定长度的值和随机数
多谢你们
解决方案
从 C 到 Python 的转换出现错误 - C 行
buf ^= (1&x[i])<<(7-(i%8));
已翻译成 Python 行
buf ^= (1 & x[i] << (7 - (i%8)))
其中一个括号放错了位置。C 行应该按原样复制,只是删除;
.
推荐阅读
- ios - 在笔记本电脑睡眠期间运行 applescript 以错误结束
- visual-studio-code - 如何在 VSCode 1.55+ 中关闭窗口标题 git 编辑状态
- android - 如何从 Firebase Cloud Functions 上传文本文件?
- visual-studio-2019 - C# & Visual Studio:存储问题
- node.js - 云函数中的参数未定义
- javascript - 如何将月份转换为单词而不是reactJs中的数字?
- html - 如何在 CSS 中定位滚动而不考虑它的块
- python - 如何从 Python Pandas 的数据框中删除索引列(即包含 0、1、2、3 的列)?
- typo3 - 在 tx_news 中获取 sys_file_reference 的合并属性
- visual-sourcesafe - Visual Source Safe Code Checkout 不更新用户详细信息