function DEKHash($str) // 0.23 { $n = strlen ($str); $hash = $n; for ($i = 0; $i $n; $i++) { $hash = (($hash 5) ^ ($hash>> 27)) ^ ord ($str[$i]); } return $hash % 701819; } function FNVHash($str) // 0.31 { $hash = 0; $n = strlen ($str); for ($i = 0; $i $n; $i++) { $hash *= 0x811C9DC5; $hash ^= ord ($str[$i]); } return $hash % 701819; } function PJWHash($str) // 0.33 { $hash = $test = 0; $n = ...
by yueming - php文档中心 - 2009-04-13 10:55:53 阅读(1237) 回复(0)
恩...或许还有朋友不清楚字符串的哈希函数到底有什么用,这个用处呢,就是将字符串转换成数字,同时让所得数字尽量平均的分布在容器中,换句话说就是让字符串得到相同数字这种情况尽可能少的出现。当然咯...容器太小,内容太多那么再好的算法也没法避免出现冲突 = =b 从网上找到的哈希函数基本上都是C算法的...最后只好从C and Java 算法中整理 and 测试了这些 PHP中的实现方法。有几个经典的算法在 PHP 下会有问题,字符串一长就...
public class MyStringHashCode { public static void main(String[] args) { System.out.println("MyString".hashCode()); System.out.println("MyString".hashCode()); } } 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/75083/showart_1110516.html
1. 截取GB2312中文字符串 php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; } ?> 2. 截取u...
function substrs($content,$length) { if(strlen($content)>$length){ $num=0; for($i=0;$i127)$num++; } $num%2==1 ? $content=substr($content,0,$length-4):$content=substr($content,0,$length-3); $content.=' ...'; } return $content; } 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10599/showart_186422.html
简单实用 0xa0) $j++; } if($j%2!=0) $strlen--; $rstr=substr($str,0,$strlen); if (strlen($str)>$strlen && $other) $rstr.='...'; return $rstr; }; ?> 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12228/showart_61846.html
#!/bin/perl #输入任务号 my $INPUT_NUM=shift; my %cfg=( 1 => sub1(), 2 => sub2(), 3 => sub3(), ); $cfg{$INPUT_NUM}; sub sub1{ } sub sub2{ } sub sub3{ } ########################## 请问hash表中的value可以是子函数名称吗,上面的脚本输入是个任务号($INPUT_NUM),根据不同的任务号从hash中找出对应的子函数,但是脚本没法执行,请问是什么地方出错?
在论坛博客中看到关于字符串分割函数strtok()的一个例子: [code] 调用方式:char *strtok(char *str1,char *str2); 功能说明:函数strtok()返回字符串str1中指向一个由str2所指定的字符或者字符串的分隔符的指针,当没有要返回的分隔符时,就返回一个空指针。 函数strtok()实际上修改了有str1指向的字符串。每次找到一个分隔符后,一个空(NULL)就被放到分隔符处,函数用这种方法来连续查找该字符串。 例...
我用的是GTK下的编程
[code]
struct GOODS
{
gchar *name;
gchar *ID;
gint amount;
}goods[100];
struct GOODS goods[100]={{"显示器","NK111",12},{"键盘","LL222",52},{"主板","DD231",45},{"光驱","COMBO1",555},{"系统","LINUX",78}};
int length=5;
gint r;
my_data= gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget));/*获得下拉列表选定的内容*/
for ( i=0; i
strlen($str )) return; if (($length!=NULL) && ( $start>0) && ($length> strlen($str)-$start)) return; if (( $length!=NULL) && ($startstrlen($str )+$start)) return; if ($length == NULL) $length = (strlen($str ) - $start); if ($start 0){ for ($i= $start; $i=0; $i --){ $rev_str .= $str[$i ]; } return $...