DJBX33A 哈希函数又叫做time33 哈希函数,PHP、Perl、Apache中都是用该方法做为其哈希函数的实现。
本文就对该哈希函数做一简单的介绍,并用Bash对其进行实现。
该方法十分简单,将字符串中的每个字符的ascii码迭代*33加在一起即可。即hash(i)=hash(i-1)*33+ascii(i)。
假如字符串为:abc,则结果就是hashCode=(ascii(a)*33+ascii(b))*33+ascii(c)
PHP中的实现见博客:PHP中的hash函数实现
本文使用Bash实现该hash函数,代码如下:
#!/home/admin/bin/bash_bin/bash_4 declare -A HashAsciiTable; for c in {a..z} {A..Z} do HashAsciiTable[$c]=`printf "%d" "'$c"`; done function hash { inputStr=$1 strLength=${#inputStr}; hashValue=5381; for((i=0;i<strLength;i++)) do char=${inputStr:$i:1}; code=0; if [ -n ${HashAsciiTable[$char]} ]; then code=${HashAsciiTable[$char]}; fi hashValue=$((code+hashValue*33)); done eval $2=$hashValue; } ## call the hash function hash "abcdefasdff2123as" hashCode; ## echo the hash code for input string echo $hashCode
结果为:1294730825853141650
相关推荐
算法djbx33a_32 ref - 这是 Daniel Bernstein 著名的 DJBX33A 哈希函数(h_i+1 = h_i * 33 + c_i+1, h_0 = 5381)。 包含它以显示基准中的基线。 该实现是一个简单的循环,您可能会在任何示例代码中找到。 djbx33a_...
Times33哈希算法,也称为DJBX33A(Daniel J. Bernstein, Times 33 with Addition),是一种简单而高效的字符串哈希算法。该算法在PHP和Perl中被广泛使用,是Apache Portable Runtime (APR)库的默认哈希函数。本文将...
在PHP的源代码`zend_hash.h`中,DJBX33A的具体实现被优化为一个内联函数`zend_inline_hash_func`。这个函数首先设定初始哈希值为5381,然后针对不同长度的字符串,使用一个循环来处理每个字符。循环内部,哈希值通过...
FM33A0xx_ds_chs、bootloaderFM33A0xx组合示例v2.0.zip 、FM33A0xx系列ARM固件函数库用户使用手册_V1.0.pdf、FM17520完整数据手册、FM17550、Keil.FM33A0XX_DFP.0.2.00beta.pack、Keil环境下复旦微FM33A0系列ARM芯片...
《iOS游戏应用源代码解析——深入理解remotevision-CurledViews-33a4528》 在iOS开发领域,源代码分析是一项至关重要的技能,它能够帮助开发者深入理解应用的工作原理,优化代码,以及创新性地实现新功能。本篇文章...
根据提供的文件信息,我们可以提取并总结出关于DCL-33A指示控制器的相关知识点: ### DCL-33A 指示控制器介绍 #### 一、产品概述 DCL-33A是一款用于安装在导轨上的指示控制器,其设计符合一定的规格要求。该控制器...
3. **Library**:库文件,可能包含复旦微电子提供的特定于FM33A0XX的函数库,如电机控制库、通信协议库等,这些库函数可以帮助开发者快速实现特定功能。 4. **Examples**:例程文件,是本压缩包的核心部分,提供了...
2 双击您下载的驱动程序 驱动会解压缩到硬盘的以下位置:C: DRIVERS WIN INT33A0 3 打开设备管理器 4 展开"其他设备"选项 5 在" 未知设备"上点击升级驱动和软件 6 将驱动更新位置指向第2步解...
### FM33A0xxEV MCU产品概述: - **产品类型与用途**:FM33A0xxEV是一款具备512KB存储容量的Cortex-M0微控制器单元(MCU),特别适用于智能电表。 - **特点**:该MCU支持多种引脚和封装选项,提供了丰富的外设资源和...
提供的“fm33a0xx_FreeRTOS_template”文件很可能是移植FreeRTOS到FM33A0XX的一个基础模板,包含了上述步骤的基本实现。这个模板对于初学者来说是一个宝贵的参考资源,可以从中学习到移植过程的关键步骤和最佳实践。...
【标签】"fudan FM33A0XXDEMO"表明这是一个与复旦微电子FM33A0系列相关的演示或示例代码,可能包含了一些基本功能的实现,帮助开发者了解如何在IAR环境下开始使用这些芯片。 在【压缩包子文件的文件名称列表】...
- **任务创建**:编写实现具体功能的任务函数,并调用`xTaskCreate()`创建任务。 - **中断处理**:FreeRTOS与中断协同工作,需要正确设置中断服务例程,并考虑中断上下文下的同步问题。 - **调试与优化**:使用...
**UJ33a直流电位差计**是一款高精度的便携式测量工具,主要用于实验室、车间和现场的直流电压测量。它具备0.05%的测量精度,不仅可直接测量电压,还能通过换算来测量直流电阻、电流、功率以及温度等参数。这款电位差...
此程序为无线模块RFC-33A接收及发送程序,STM32的
**MN33A102 Danfoss手册详解** Danfoss是一家全球知名的工程公司,以其在能源效率、制冷和空调技术方面的专业知识而闻名。MN33A102是Danfoss产品线中的一款重要组件,可能涉及到的是丹富斯的电磁阀、控制器或者热力...
PCD—33A是专门设计用以实现温度控制的设备,其特点包括可编程功能,即用户可根据实际需要调整控制逻辑和参数设置。此类控制器广泛应用于工业、科研及实验室环境,用于监控和调整温度,确保过程的稳定性与精确性。...
《基于FM33A0XX的FreeRTOS模板源码解析》 在嵌入式系统开发领域,实时操作系统(RTOS)的使用已经变得越来越普遍。FreeRTOS作为一款轻量级、开源的RTOS,因其高效、稳定的特点深受工程师们的喜爱。本文将深入探讨...