UninterpretedBytes.st
branchjv
changeset 19559 d35a89d5c0ec
parent 19528 117cd2d2715b
parent 19554 91ec8f105783
child 19636 cfa029c95cfc
--- a/UninterpretedBytes.st	Sun Apr 03 07:04:52 2016 +0200
+++ b/UninterpretedBytes.st	Fri Apr 08 07:02:36 2016 +0100
@@ -467,7 +467,6 @@
     "Modified: / 5.3.1998 / 14:56:22 / stefan"
 ! !
 
-
 !UninterpretedBytes methodsFor:'Compatibility'!
 
 doubleWordAt:index
@@ -4235,6 +4234,25 @@
      #[1 2 3 4 1 2 3 4] computeXorHashFrom:1 to:8.
      #[1 2 3 4 5 6 7 8] computeXorHashFrom:2 to:8.
      #[2 3 4 5 6 7 8] computeXorHashFrom:1 to:7.
+     #[2 3 4 5 6 7 8] computeXorHashFrom:1 to:8.
+    "
+!
+
+hash
+    |sz|
+
+    sz := self size.
+    sz <= 32 ifTrue:[
+        ^ self computeXorHashFrom:1 to:sz.
+    ].
+    ^ (sz bitXor:(self computeXorHashFrom:1 to:16)) bitXor:(self computeXorHashFrom:sz-16 to:sz)   
+
+    "
+        #[1 2 3 4] hash
+        #[1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
+          1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 ] hash
+        #[1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
+          1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1] hash
     "
 ! !