Skip to content
lsl.devlsl.devLSL Dev

llHash

function
Function syntax
integer llHash(
  1. string val// String to hash.
);
Returns
integer
Energy
10

Returns an integer representing the 32-bit hash value of the string val (returns 0 if the string is empty).

Returns a 32bit hash for the provided string. Returns 0 if the input string is empty.

How to use
integer result = llHash("");

The SDBM algorithm provides a good general purpose hash function with a fairly even distribution across the 32 bit space in the general case.

The characters fed into the hash function are 32bit wide.

U32 SDBMHash(const std::wstring &val)
{
U32 hash(0);
for(const wchar_t &c: val)
{
hash = c + (hash << 6) + (hash << 16) - hash;
}
return hash;
}

In LSL:

integer llSDBMHash(string value)
{
integer hash = 0;
integer index = 0;
for (index = 0; index < llStringLength(value); ++index)
{
hash = llOrd(value, index) + (hash << 6) + (hash << 16) - hash;
}
return hash;
}

This hash value is not cryptographically secure and should not be used as part of any security protocol.

SDBM provides a good distribution of hash values across its range, however with only

32 bits the chance of a collision is unacceptably high.(with 1000 entries, the odds for a collision are about 1 in 10000.)

Given the combination of the object name and the owner’s key generate a unique number. This number could be used for things

like selecting a chat channel that has a low probability of colliding with another object.

integer pickIDForObject()
{
/* Generate an arbitrary integer ID for the combination of the
* object name and the ower's key. This value could be used
* for selecting a chat/listen channel.
*/
string obj_name = llGetObjectName();
key obj_owner = llGetOwner();
integer hash = llHash(obj_name + (string)obj_owner);
return hash;
}
  • llOrd — Convert a character into an ordinal
  • llChar — Convert an ordinal into a character
Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.

From the Second Life Wiki

Community documentation adapted from LlHash, by Linden Research, Inc. and contributing residents.View contributors and history.

Imported wiki revision:

  • LlHash (revision 1210062, )

Licensed under CC BY-SA 3.0. Last wiki edit: .Formatting and links have been adapted for this site; API metadata follows the LSL definitions.