我需要从文件中读取一个字节,用0x71对其进行异或,然后将其写回另一个文件。但是,当我使用下面的代码时,它只是将字节读取为字符串,所以xoring会产生问题。
f = open('a.out', 'r')
f.read(1)
所以我在C也做了同样的事
#include <stdio.h>
int main() {
char buffer[1] = {0};
FILE *fp = fopen("blah", "rb");
FILE *gp = fopen("a.out", "wb");
if(fp==NULL) printf("ERROR OPENING FILE\n");
int rc;
while((rc = fgetc(fp))!=EOF) {
printf("%x", rc ^ 0x71);
fputc(rc ^ 0x71, gp);
}
return 0;
}
有人能告诉我如何将使用f.read()
得到的字符串转换为十六进制值,以便我可以用0x71对其进行异或,然后将其写入文件吗?
试试这个:
然后将存储在我的号码中的数字进行异或运算
如果要将某个内容视为字节数组,则通常需要一个
bytearray
,因为它的行为是可变字节数组:为字节数组编制索引将返回一个介于0x00和0xff之间的整数,并且就地修改可以避免创建列表并再次将所有内容连接起来的需要。还要注意,该文件是以二进制(“rb”)形式打开的—在您的示例中,使用“r”不是一个好主意。
相关问题 更多 >
编程相关推荐