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_...
php-perl哈希实现算法–DJBX33A(Daniel J. Bernstein, Times 33 with Addition)APR哈希默认算法
PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein, Times 33 with Addition), 这个算法被广泛运用与多个软件项目,Apache, Perl和Berkeley DB等. 对于字符串而言这是目前所知道的最好的哈希算法,原因...
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.zip
复旦微电子fm33a0xx芯片移植FreeRTOS例程,仅供参考,已验证正常
FM33A0xxEV 512KB Cortex-M0 智能电表 MCU
2 双击您下载的驱动程序 驱动会解压缩到硬盘的以下位置:C: DRIVERS WIN INT33A0 3 打开设备管理器 4 展开"其他设备"选项 5 在" 未知设备"上点击升级驱动和软件 6 将驱动更新位置指向第2步解...
`1111111111111111111111111111111111111111111
UJ33a为测量精度0.05%的直流携带式电位差计,可在实验室、车间及现场测量直流电压,亦可以换算后测量直流电阻、电流、功率及温度等。
上海复旦微电子的FM33A0xx数据手册 中文版 M0内核MCU
此程序为无线模块RFC-33A接收及发送程序,STM32的
复旦微电子FM33A0xx最新软件设计参考例程 找不到例程在哪里直接解压pack包就好了
UT33A使用说明书 UT33A使用说明书
基于复旦微FM33A0xx系列M0+平台移植FreeRTOS源码
PCD—33A操作手册.pdf 介绍了关于PCD—33A操作手册的详细说明,提供温度仪表的技术资料的下载。
IAR的简单应用程序使用系统初始化并调整内部RC 8MHZ的时钟来运行主要应用程序
Unbrick/Unlock loader firmware (viva only) for E5787s-33a.