<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body dir="ltr" bgcolor="#ffffff" text="#000000">
Hi all,<br>
<br>
I'm trying to calculate the result of a string hash function in perl. I
need an explicit function, as the perl output is used to create a C
program, that will then use that very same hash function. Please, do
not direct me to perl's excellent hash handling. I know it's there. I
use it where applicable. This is not one of those cases.<br>
<br>
The hash function I'm using is sdbm hash function
(<a class="moz-txt-link-freetext"
 href="http://www.cse.yorku.ca/%7Eoz/hash.html">http://www.cse.yorku.ca/~oz/hash.html</a>).
To calculate it, I need to
perform integer arithmetics, knowing full well it may overflow. It is
okay for it to overflow, as I only need the bottom 32 bits. In fact, my
code ANDs the result with 0xffffffff, to make sure that, on 64 bit
platforms, I only get the bottom 32 bits.<br>
<br>
Here's the problem. When the integer gets too big, Perl replaces it
with MAXINT. On 64 bit platforms, that's not too bad - I can simply
truncate to 32 bits after each operation. On 32 bit platforms, I'm a
bit at a loss as to what to do.<br>
<br>
Any suggestions on how to get the C integer semantics out of perl?<br>
<br>
Shachar<br>
<pre class="moz-signature" cols="72">-- 
Shachar Shemesh
Lingnu Open Source Consulting Ltd.
<a class="moz-txt-link-freetext" href="http://www.lingnu.com">http://www.lingnu.com</a>
</pre>
</body>
</html>