1
2
我不完全确定正确的代码应该是什么,但如果目的是
简短的版本是您想要的:
问题不在于
在这里,您可能会遇到C和Python类型之间的差异问题(C积分类型是固定大小的,并且溢出;Python积分类型实际上是无限大小的,并根据需要增长)。但我认为这不是你的问题。 问题只是如何将结果转换为字符串的问题。
调用的结果
在C中,您几乎可以将有符号整数视为大小相同的无符号整数(尽管在某些情况下,您可能不得不忽略警告)。具体作用取决于您的平台,但在2s补码平台上,有符号短0x08fb相当于无符号0xf705。例如,如果你这样做了
但在Python中,没有无符号整数。int-0x08fb与0xf705无关。如果你这样做了
你的代码确实是这样
无论如何,您必须明确决定“无符号等价”的含义,并编写代码来实现这一点。由于您试图匹配C在2s补码平台上的功能,因此可以将显式转换写成
|
2
2
这很简单。我通过在计算器上手动添加所有头字节来检查你朋友的算法,结果是正确的(
现在,我实际上并不了解python,但在我看来,它就像是在加半字节的值。您的标题字符串是这样的:
然后,你将该字符串中的每个字节从十六进制转换并相加。这意味着你要处理从0到15的值。您需要将每两个字节视为一对,并将其转换(值从0到255)。或者您需要使用实际的二进制数据,而不是二进制数据的文本表示。
在算法结束时,您实际上不需要执行
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |