计算校验和时出现问题:将 int 转换为signed int32

2023-12-10

我需要将以下 c 代码(计算文件的校验和)转换为 python。我已经用python编写了相应的代码,但结果与c版本不匹配。问题在于,只要发生溢出,Python 就会自动将 int 提升为 long,这会导致错误的校验和。

知道如何克服这个问题吗?或者是否有一个Python函数可以将long转换为signed int32?

Thanks

int calcChecksum(const guchar *data, gsize len)
{ 

    const guchar *p = data;
    int checksum = 0, g, i = len;

    while(i--) {
            checksum = (checksum << 4) + *p++;

            if((g = (checksum & 0xf0000000)) != 0)
                    checksum ^= g >> 23;

            checksum &= ~g;
    }
    return checksum;
}

解决方案:

感谢您的所有帮助。这是对我有用的功能 -

 def int32(x):
    x = 0xffffffff & x
    if x > 0x7fffffff :
        return - ( ~(x - 1) & 0xffffffff )
    else : return x 

Use numpy.int32 or numpy.uint32如果您需要限制范围。或者修改它1 << 32在可能“溢出”的操作之后。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算校验和时出现问题:将 int 转换为signed int32 的相关文章

  • Python 中的字节数组

    如何在 Python 中表示字节数组 如 Java 中的 byte 我需要用 gevent 通过网络发送它 byte key 0x13 0x00 0x00 0x00 0x08 0x00 在Python 3中 我们使用bytes对象 也称为s
  • Flask+Nginx+uWSGI:导入错误:没有名为站点的模块

    我安装为http www reinbach com uwsgi nginx flask virtualenv mac os x html http www reinbach com uwsgi nginx flask virtualenv
  • 如何使用 pyinstaller 包含文件?

    我也使用 tkinter 使用 python 3 7 编写了一个程序 由于我使用的是外部图片 因此当我将所有内容编译为一个 exe 时 我需要包含它们 我试过做 add data bg png files 但我仍然收到此错误 tkinter
  • 从Python中的字符串中提取货币金额

    我正在制作一个程序 从字符串中获取货币并将其转换为其他货币 例如 如果字符串是 the car cost me 13 250 我需要得到 and 13250 我已经有了这个正则表达式 1 确实如此 但是该字符串很有可能有多个价格 并且全部使
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • boto3 资源(例如 DynamoDB.Table)的类型注释

    The boto3库提供了几种返回资源的工厂方法 例如 dynamo boto3 resource dynamodb Table os environ DYNAMODB TABLE 我想注释这些资源 以便我可以获得更好的类型检查和完成 但我
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • Python在postgresql表中查找带有单引号符号的字符串

    我需要从 psql 表中查找包含多个单引号的字符串 我当前的解决方案是将单引号替换为双单引号 如下所示 sql query f SELECT exists SELECT 1 FROM table name WHERE my column m
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 当我在 Pandas 中使用 df.corr 时,我的一些列丢失了

    这是我的代码 import numpy as np import pandas as pd import seaborn as sns import matplotlib pyplot as plt data pd read csv dea
  • 更改 Altair 中的构面标题位置?

    如何将方面标题 在本例中为年份 移动到每个图的上方 默认值似乎位于图表的一侧 这可以轻易改变吗 import altair as alt from vega datasets import data df data seattle weat
  • python 中的 Johansen 协整检验

    我找不到任何有关在处理统计和时间序列分析 pandas 和 statsmodel 的 Python 模块中执行 Johansen 协整检验的功能的参考 有谁知道是否有一些代码可以执行时间序列之间的协整测试 现在 这已在 Python 的 s
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • Pandas 滚动窗口 Spearman 相关性

    我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和 或 Pearson 相关性 我努力了df corr df col1 rolling P corr df col2 P为窗口尺寸 但我似乎无法定义该方法 添加meth
  • 乘以行并按单元格值附加到数据框

    考虑以下数据框 df pd DataFrame X a b c d Y a b d e Z a b c d 1 2 1 3 df 我想在 列中附加数字大于 1 的行 并在该行中的数字减 1 df 最好应该 然后看起来像这样 或者它可能看起来
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • 使用查询字符串和锚点标签形成正确的 URL

    当查询字符串和锚标记 哈希标记 在 URL 中可见时 它们的正确显示顺序是什么 http www whatever com var val anchor or http www whatever com anchor var val 有这方
  • 组合 ASP.NET 属性中的字符串

    我正在尝试在属性内连接一个字符串 我收到一个错误 我认为这与我的Eval 是否有正确的方法来连接字符串 或者这是不可能的 我认为问题在于我设置 NavigateUrl 的位置
  • 循环优化。寄存器重命名如何打破依赖关系?什么是执行端口容量?

    我正在分析 Agner Fog 的 optimization assemble 中的循环示例 我指的是12 9章 代码是 我简化了一下 L1 vmulpd ymm1 ymm2 rsi rax vaddpd ymm1 ymm1 rdi rax
  • 使用 BouncyCastle SSL 通过 keyFile 进行 Java AES 解密

    我正在尝试编写 Java 代码 使用与 OpenSSL 解密兼容的 BouncyCastle 来解密使用 AES256 加密的文件 s key 是提供的文件 其中包含将用于加密和解密的密钥 需要完成的步骤 1 读取密钥文件 2 使用提供的密
  • WebView 阻止弹出窗口吗?

    我在用着WebView浏览 pesopay com 并且它工作正常 除了当我按下提交按钮时 使用 Google Chrome 等互联网浏览器会显示一个弹出窗口 确认您填写的信息 但在我的安卓里WebView当我按下提交按钮时什么也没发生 我
  • 在 64 位 Windows 上安装 lxml

    所以我试图在我的机器上安装 lxml 但我似乎无法让它工作 我有 Windows 8 1 64 位和 python 3 5 我都用过 pip install lxml and easy install lxml 我不断收到此错误消息 C U
  • PyAudio 输入溢出 -9981 - 没有解决方案工作

    请不要将此问题报告为重复 因为没有一个可用的解决方案适合我 我测试了所有这些 所以 我正在尝试在我的 RaspberryPi B 型板上运行 PyAudio 示例录音程序 这是我收到的错误 Traceback most recent cal
  • 如何从仅标头库构建静态库

    我正在尝试构建项目的静态库stb 所以我可以将它链接到另一个项目 不是用 C C 编写的 我已经创建了 CMakeLists txt 文件来使用 CMake 构建它 但是构建的静态库文件是空的 我怀疑这是因为机顶盒似乎是仅标头图书馆 我尝试
  • 将函数应用于 DataFrame 中的每个单元格,该单元格取决于 pandas 中的列名称

    如何将函数应用于 DataFrame 中取决于列名称的每个单元格 我知道pandas DataFrame applymap但它似乎不允许依赖于列名称 import numpy as np import pandas as pd np ran
  • ggplot2 中稳健的标准错误

    我想用 ggplot2 绘制一个模型 我估计了一个稳健的方差 协方差矩阵 我想在估计置信区间时使用它 我可以告诉 ggplot2 使用我的 VCOV 或者 我可以以某种方式强制 Predict lm 使用我的 VCOV 矩阵吗 一个虚拟示例
  • 查找多个字符串匹配的算法

    我正在寻找一种有效算法的建议 用于在大量文本中查找所有匹配项 要搜索的术语将包含在列表中 并且可以有 1000 多种可能性 搜索词可以是 1 个或多个单词 显然 我可以多次遍历文本并与每个搜索词进行比较 效率不太高 我考虑过对搜索词进行排序
  • Rails 3.1 中的图像 - 转向生产

    我的文章有图片 我将图像放在 app assests images 中 并将它们的位置存储在数据库的字段中 然后我可以使用以下方式显示它们 但是当我转移到生产服务器时 我的图像都没有显示 服务器正在寻找 asset blank d5dd6e
  • 将文本添加到 grid.table 图中

    我最近开始使用grid table函数从gridExtra包将表格数据转换为 png 图像文件以在网络上使用 到目前为止 我对它很满意 因为它默认产生非常漂亮的输出 有点像ggplot2对于桌子 就像那个人asked对于这个问题 我希望看到
  • PHP URL 编码保留无效的 url 字符

    我需要将 url 无效字符替换为 url 有效字符 然后再次将其转换回来 这是一个带有类似 url 的搜索页面http my site search this is a search 搜索表单 POSTS 然后用户重定向到新的 url Ph
  • 从 IIS 部署恢复 ASP.NET 项目

    我是 ASP NET Web 开发的真正新手 具有 Java 背景 一位朋友有一个在 IIS 上运行的 ASP NET 3 0 部署 他找不到在 Visual Studio 2008 中创建的原始项目文件 并请求我帮助他 是否可以从 IIS
  • 我应该如何处理 WP7 的 Bing 地图控件中图钉上的单击事件

    我要添加模板
  • MPMoviePlayerController 在后台播放音频流

    当应用程序进入后台时 我在播放音频流时遇到麻烦 我使用代码来启动流 NSURL mediaURL NSURL URLWithString http url to my stream MPMoviePlayerController mp MP
  • 可靠地重定向到 symfony2 中上次访问的页面

    我将 FosUserBundle 登录嵌入到我的主页中 我已经覆盖了 fos 的安全控制器并更改了 renderLogin 操作 我必须放置一个if使用以下条件重定向到上次访问的页面referers that was一切都很好 但我现在意识
  • EF6 不延迟加载导航属性

    我遇到了 EF6 延迟加载问题 我搜索了 StackOverflow 但我发现的其他问题不适合我的情况 我正在使用virtual关键字和我的课程是public LazyLoadingEnabled and ProxyCreationEnab
  • 计算校验和时出现问题:将 int 转换为signed int32

    我需要将以下 c 代码 计算文件的校验和 转换为 python 我已经用python编写了相应的代码 但结果与c版本不匹配 问题在于 只要发生溢出 Python 就会自动将 int 提升为 long 这会导致错误的校验和 知道如何克服这个问