'=========================================================================== ' Subject: HASH FUNCTION FOR PBDOS Date: 12-11-99 (17:10) ' Author: Don Schullian Code: PB ' Origin: d83@DASoftVSS.com Packet: ALGOR.ABC '=========================================================================== $if 0 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· PowerBASIC v3.50 ÚÄÄ´ DASoft ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ ³ DATE: 1999-12-11 ÇÄ· ³ ³ FILE NAME fHash .BAS º This code released ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÄ º º ³ ³ º into Public Domain º º ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ º º ÔÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ º ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ This function is based on the code by Derek Ross. $endif '.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø.ø ' ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø ø FUNCTION fHash ( BYVAL Text AS STRING, _ BYVAL Bytes AS LONG ) AS LONG DIM H_ptr AS STATIC LONG PTR DIM HashCodes AS STATIC STRING * 1024 DIM B_ptr AS LOCAL BYTE PTR DIM Hash AS LOCAL LONG DIM X AS LOCAL INTEGER IF H_ptr = 0 THEN RANDOMIZE 1 H_ptr = VARPTR(HashCodes) B_ptr = H_ptr FOR X = 1023 TO 0 STEP -1 @B_ptr[X] = RND(0,255) NEXT END IF B_ptr = STRPTR(Text) FOR X = LEN(Text)-1 TO 0 STEP -1 Hash = ( Hash XOR @H_ptr[@B_ptr[X]] ) NEXT SELECT CASE Bytes CASE 4 : 'nothing to do CASE 1 : Hash = ( Hash AND &h000000FF ) CASE 2 : Hash = ( Hash AND &h0000FFFF ) CASE 3 : Hash = ( Hash AND &h00FFFFFF ) END SELECT FUNCTION = Hash END FUNCTION ' '------------------------------------------------------------------------------- '--------- TEST CODE ----------------------------------------------------------- '------------------------------------------------------------------------------- ' DIM Bytes AS INTEGER DIM Temp AS STRING DIM Hash AS LONG CLS Temp = "ABCDEFGHIKJKMNOPQRSTUVWXYZ" FOR Bytes = 4 TO 1 STEP -1 Hash = fHash(Temp,Bytes) PRINT USING$("##,###,###,### ", Hash) NEXT