Integer.st
changeset 10488 8c254af93816
parent 10030 64906d007198
child 10681 835be355e638
--- a/Integer.st	Mon Apr 02 17:56:50 2007 +0200
+++ b/Integer.st	Mon Apr 02 17:59:31 2007 +0200
@@ -9,7 +9,6 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
 "{ Package: 'stx:libbasic' }"
 
 Number subclass:#Integer
@@ -1868,6 +1867,34 @@
 
     "Created: / 25.10.1998 / 14:58:09 / cg"
     "Modified: / 25.10.1998 / 19:20:33 / cg"
+!
+
+digitBytes
+    "return a byteArray filled with the receivers bits
+     (8 bits of the absolute value per element),
+     least significant byte is first"
+
+    ^ self subclassResponsibility
+!
+
+digitBytesMSB:msbFlag
+    "return a byteArray filled with the receivers bits
+     (8 bits of the absolute value per element),
+     if msbflag = true, most significant byte is first,
+     otherwise least significant byte is first"
+
+    msbFlag ifTrue:[
+        ^ self digitBytes copyReverse.  "digitBytes may be shared - reverse a copy!!"
+    ].
+    ^ self digitBytes
+
+    "
+      16r12 digitBytesMSB:true
+      16r1234 digitBytesMSB:true
+      16r1234 digitBytesMSB:false
+      16r12345678 digitBytesMSB:true
+      16r12345678 digitBytesMSB:false
+    "
 ! !
 
 !Integer methodsFor:'coercing & converting'!
@@ -2308,7 +2335,7 @@
 
     b := self highBit.
     rem := 1 bitShift:b.
-    result := 0 asLargeInteger numberOfDigits:(b // 8)+1.
+    result := LargeInteger basicNew numberOfDigits:(b // 8)+1.
     b := b+1.
     [b > 0] whileTrue:[
         rem >= self ifTrue:[
@@ -3105,6 +3132,7 @@
     "Modified: 15.10.1997 / 18:43:49 / cg"
 ! !
 
+
 !Integer methodsFor:'special bit operators'!
 
 bitAnd_32:anInteger
@@ -3488,7 +3516,7 @@
 !Integer class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.189 2006-10-04 12:33:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.190 2007-04-02 15:59:31 stefan Exp $'
 ! !
 
 Integer initialize!