分享一个生成哈希值的C代码
代码是我在阅读assimp源码时看到的,不依赖任何第三方,可直接集成。
#pragma once
#ifndef AI_HASH_H_INCLUDED
#define AI_HASH_H_INCLUDED#ifdef __GNUC__
# pragma GCC system_header
#endif#include <stdint.h>
#include <string.h>
#include <cmath>// ------------------------------------------------------------------------------------------------
// Hashing function taken from
// http://www.azillionmonkeys.com/qed/hash.html
// (incremental version)
//
// This code is Copyright 2004-2008 by Paul Hsieh. It is used here in the belief that
// Assimp's license is considered compatible with Pauls's derivative license as specified
// on his web page.
//
// (stdint.h should have been been included here)
// ------------------------------------------------------------------------------------------------
#undef get16bits
#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \|| defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
#define get16bits(d) (*((const uint16_t *) (d)))
#endif#if !defined (get16bits)
#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\+(uint32_t)(((const uint8_t *)(d))[0]) )
#endif// ------------------------------------------------------------------------------------------------
inline uint32_t SuperFastHash (const char * data, uint32_t len = 0, uint32_t hash = 0) {uint32_t tmp;int rem;if (!data) return 0;if (!len)len = (uint32_t)::strlen(data);rem = len & 3;len >>= 2;/* Main loop */for (;len > 0; len--) {hash += get16bits (data);tmp = (get16bits (data+2) << 11) ^ hash;hash = (hash << 16) ^ tmp;data += 2*sizeof (uint16_t);hash += hash >> 11;}/* Handle end cases */switch (rem) {case 3: hash += get16bits (data);hash ^= hash << 16;hash ^= abs(data[sizeof(uint16_t)]) << 18;hash += hash >> 11;break;case 2: hash += get16bits (data);hash ^= hash << 11;hash += hash >> 17;break;case 1: hash += *data;hash ^= hash << 10;hash += hash >> 1;}/* Force "avalanching" of final 127 bits */hash ^= hash << 3;hash += hash >> 5;hash ^= hash << 4;hash += hash >> 17;hash ^= hash << 25;hash += hash >> 6;return hash;
}#endif // !! AI_HASH_H_INCLUDED
相关文章:
分享一个生成哈希值的C代码
代码是我在阅读assimp源码时看到的,不依赖任何第三方,可直接集成。 #pragma once #ifndef AI_HASH_H_INCLUDED #define AI_HASH_H_INCLUDED#ifdef __GNUC__ # pragma GCC system_header #endif#include <stdint.h> #include <string.h> #…...
【Windows 常用工具系列 11 -- 福昕PDF搜索高亮过的文本】
文章目录 福昕 PDF 搜索高亮过的文本 福昕 PDF 搜索高亮过的文本 在 pdf 文档阅读过程中,我们需要经常高亮一些文本,以方便下次阅读时找到重点。我这边使用的是 福昕PDF 阅读器,下面就介绍下如何在福昕阅读器中搜索已经高亮过的文本。...
(二)汇编语句组成
一个完整的 RISC-V 汇编程序有多条 语句(statement) 组成。 一条典型的 RISC-V 汇编 语句 由 3 部分组成: 1.标签 List item label(标签): 标签是标识程序位置的记号。通常定义一个名称然后加上":"后缀。…...
Linux C 网络编程概述
网络编程 计算机网络概述分类网络体系结构通信协议通信流程网络通信帧格式以太网帧格式分析ARP 协议分析IP 数据报分析IP分类IP 分配子网掩码 TCP 段分析 TCP三次握手协议 ⭐TCP四次挥手协议 ⭐ TCP编程基于 TCP 客户端编程-步骤说明基于 TCP 服务器端编程-步骤说明基于 TCP 服…...
腾讯云标准型s5和s6有什么区别?CPU处理器有差异吗?
腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…...
WPF TextBox实现placeholder
WPF里TextBox没有placeholder,需要自己实现,本篇博客介绍WPF TextBox实现placeholder,效果如下: 实现技巧是在 TextBox 控件的 Style 中使用触发器(Triggers)来显示和隐藏placeholder文本。xmal代码如下&am…...
UiPath Studio 2023.10 Crack
UiPath Studio是一款功能强大且用户友好的集成开发环境 (IDE),专为机器人流程自动化 (RPA) 设计。它由自动化技术领域的领先公司UiPath开发。 以下是 UiPath Studio 的一些主要功能和组件: 图形用户界面 (GUI):UiPath Studio 具有直观且用户友…...
SpringBoot——入门及原理
SpringBoot用来简化Spring应用开发,约定大于配置,去繁从简,是由Pivotal团队提供的全新框架。其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置(有特殊需求可以添加自己的配置覆盖默认配…...
js实现页面滚动时自动切换Sidebar标签,点击标签自动滚动页面
js实现页面滚动时自动切换Sidebar侧边导航标签,点击标签自动滚动页面 <van-sidebar class"sidebar" v-model"activeKey"><van-sidebar-item :title"i.title" click"onChange(i)" v-for"(i,k) in activeList&…...
Failed to load resource: net::ERR_UPLOAD_FILE_CHANGED 谷歌浏览器就会有这个问题 其他的浏览器没有
Failed to load resource: net::ERR_UPLOAD_FILE_CHANGED 10 10: Difficulties in file uploading through all browsers and applications...
微信小程序 prettier 格式化
一、安装prettier插件 二、打开设置 然后再打开setting.json 新增代码 {"editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","prettier.documentSelectors": ["**/*.wxml", "**/*.wx…...
SystemVerilog学习 (10)——线程控制
一、概述 在实际硬件中,时序逻辑通过时钟沿来激活,组合逻辑的输出则随着输人的变化而变化。所有这些并发的活动在Verilog 的寄存器传输级上是通过initial和 always块语句、实例化和连续赋值语句来模拟的。为了模拟和检验这些语句块,测试平台使用许多并发执行的线程。在测试平台…...
【开题报告】基于SpringBoot的二手汽车交易平台的设计与实现
1.研究背景 随着社会经济的不断发展,二手汽车交易市场逐渐壮大,二手汽车交易平台作为一种重要的电子商务形式备受关注。本文基于Spring Boot框架,旨在设计与实现一个高效、安全、用户友好的二手汽车交易平台。本文将深入探讨二手汽车市场发展…...
Python 爬虫入门
文章目录 Python 爬虫入门requests 库beautifulsoup4库函数findall(),find()函数get() 爬虫实例 1:抓小说爬虫实例 2:抓豆瓣 top 250 的电影信息后记 Python 爬虫入门 Python 的爬虫功能使得程序员可以快速抓取并分析网页中的信息࿰…...
[ 加密 ] SHA256
SHA256 例程 一般文件的完整性要使用md5或者sha进行完整性校验,这里提供两个函数, intact_update_sha 是计算指定文件SHA值并保存到SHA文件 intact_check_sha 计算文件SHA值并和SHA文件进行对比 编译方法: gcc demo.c -lssl -lcrypto #…...
推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
Lrzsz,又称为lrz和lsz,是一个用于在Unix、Linux、macOS等操作系统上进行串行文件传输的工具。它支持基于X/Y/ZModem协议的文件传输,能够通过串口或者Telnet/SSH等网络连接进行文件传输。Lrzsz具有传输速度快、可靠性高、易于使用等特点&#…...
《QT从基础到进阶·三十五》QT插件实现侧边工具栏tabBar
tabBar是用QT插件实现的一个dll,对于插件的使用可以参考文章: 《QT从基础到进阶三十三》QT插件开发QtPlugin 源码放在文章末尾 该功能类似侧边工具栏,可以在该标签栏上添加自己开发的界面,实现代码如下: 1、所有功能…...
风丘电动汽车热管理方案 为您的汽车研发保驾护航
热管理技术作为汽车节能、提高经济性和保障安全性的重要措施,在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调,而电动汽车的热管理系统在燃油汽车热管理架构的基础之上,又增加了电机电控热…...
每日一练 | 华为认证真题练习Day134
1、开启标准STP协议的交换机可能存在哪些端口状态?(多选) A. Discarding B. Listening C. Disabled D. Forwarding 2、下列路由协议中优先级最高的是? A. Direct B. RIP C. OSPF D. Static 3、参考如图所示的输出结果&…...
python连接hive报错:TypeError: can‘t concat str to bytes
目录 一、完整报错 二、解决 三、 其他报错 四、impala方式连接hive 或者直接使用 pip install pyhive[hive] 安装。需要先 pip uninstall pyhive。 一、完整报错 Traceback (most recent call last): File "D:/Gitlab/my_world/hive2csv.py", line 18, in <…...
Magisk深度解析:Android系统定制与Root权限的完整实战指南
Magisk深度解析:Android系统定制与Root权限的完整实战指南 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk Magisk作为Android系统定制的瑞士军刀,通过独特的系统级修改技术&#…...
音频工程中的平衡与非平衡连接技术解析
1. 平衡与非平衡音频基础解析在专业音频工程领域,平衡与非平衡连接是两种最基础的信号传输方式。从业20年来,我见证过无数因接口选择不当导致的系统故障——从细微的底噪到灾难性的交流声干扰。理解它们的本质区别,是搭建可靠音频系统的第一步…...
AI代码审计工具Vulnhuntr实战:LLM如何挖掘复杂逻辑漏洞
1. 项目概述:当AI成为代码审计员 在安全圈摸爬滚打十几年,我见过太多因为一个不起眼的代码缺陷引发的“血案”。传统的静态代码分析工具(SAST)就像拿着清单的检查员,只能发现那些写在教科书里的、模式固定的漏洞&…...
OpenClaw:基于零信任与深度防御的安全AI代理网关架构与实践
1. 项目概述与核心安全理念最近在折腾一个挺有意思的项目,叫 OpenClaw。简单来说,这是一个为 AI 智能体(AI Agent)设计的、带有 SSH 桥接功能的运行平台。它的核心设计理念非常激进,甚至可以说有点“偏执”:…...
深度学习超分辨率技术加速SEM材料表征:原理、实践与16倍效率提升
1. 项目概述:当深度学习遇见扫描电镜在材料科学的研究一线,尤其是金属微观结构分析领域,扫描电子显微镜(SEM)是我们观察材料“内在世界”的得力工具。然而,一个长期困扰我们的矛盾是:高分辨率与…...
多模态AI重塑教育:从评估到个性化支持的实践与伦理挑战
1. 项目概述:当多模态AI走进课堂,我们面临什么?作为一名长期关注教育技术前沿的从业者,我亲眼见证了AI从实验室概念到课堂助手的演变。最初,AI在教育中的应用多是单点突破,比如用算法批改选择题,…...
CANN Cumsum算子测试题
决赛题目:Cumsum 算子测试用例设计 【免费下载链接】cann-competitions 本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。 项目地址: https://gitcode.com/cann/cann-competitions 任务说明 本题目要求参赛者为 CA…...
能量阀工厂
在当今工业领域,能量阀对于众多系统的高效运行起着至关重要的作用。天津水阀机械有限公司作为一家专业的能量阀工厂,凭借其深厚的技术实力、卓越的产品质量和广泛的市场应用,在行业中占据着重要地位。下面,让我们一同深入了解这家…...
CANNBot技能:模型推理预取优化
【免费下载链接】cannbot-skills CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。 项目地址: https://gitcode.com/cann/cannbot-skills name: model-infer-prefetch description: 基于 PyTorch 框架的昇腾 N…...
大语言模型能力结构实证研究:参数量与智能的非线性关系
1. 项目概述:我们到底在研究什么?最近几年,大语言模型(LLM)的浪潮席卷了整个行业,从ChatGPT的横空出世到各类开源模型的百花齐放,我们似乎每天都在见证“奇迹”。但作为一名在一线摸爬滚打多年的…...
