--- a/Integer.st Tue Jul 07 19:20:10 2009 +0200
+++ b/Integer.st Tue Jul 07 19:21:10 2009 +0200
@@ -3230,21 +3230,21 @@
base := b.
(base between:2 and:36) ifFalse:[
- self error:'invalid base' mayProceed:true.
- base := 10.
+ ConversionError raiseRequestErrorString:' - invalid base'.
+ base := 10.
].
showRadix ifTrue:[
- base printOn:aStream.
- aStream nextPutAll:'r'.
+ base printOn:aStream.
+ aStream nextPut:$r.
].
(self = 0) ifTrue:[aStream nextPut:$0. ^ self].
(self negative) ifTrue:[
- aStream nextPut:$- .
- num := self negated.
+ aStream nextPut:$- .
+ num := self negated.
] ifFalse:[
- num := self.
+ num := self.
].
"
@@ -3269,11 +3269,11 @@
r2 := base*base. "/ radix^2
r4 := r2*r2. "/ radix^4
base <= 10 ifTrue:[
- r := r4*r2. "/ radix^6
- nD := 6.
+ r := r4*r2. "/ radix^6
+ nD := 6.
] ifFalse:[
- r := r4*base. "/ radix^5
- nD := 5.
+ r := r4*base. "/ radix^5
+ nD := 5.
].
"get a Stream with space for the digits we are going to print.
@@ -3283,38 +3283,38 @@
s := WriteStream on:(String new:((num highBit // base highBit - 1) + 1)).
[num >= r] whileTrue:[
- "/
- "/ chop off nD digits.
- "/
- divMod := num divMod:r.
- num := divMod at:1.
- numN := divMod at:2.
-
- "/ process them
- nD timesRepeat:[
- divMod := numN divMod:base.
- numN := divMod at:1.
- mod := divMod at:2.
- s nextPut:(Character digitValue:mod).
- ].
+ "/
+ "/ chop off nD digits.
+ "/
+ divMod := num divMod:r.
+ num := divMod at:1.
+ numN := divMod at:2.
+
+ "/ process them
+ nD timesRepeat:[
+ divMod := numN divMod:base.
+ numN := divMod at:1.
+ mod := divMod at:2.
+ s nextPut:(Character digitValue:mod).
+ ].
].
[num ~= 0] whileTrue:[
- divMod := num divMod:base.
- num := divMod at:1.
- mod := divMod at:2.
- s nextPut:(Character digitValue:mod).
+ divMod := num divMod:base.
+ num := divMod at:1.
+ mod := divMod at:2.
+ s nextPut:(Character digitValue:mod).
].
aStream nextPutAll:(s contents reverse).
"
- 3000 factorial printOn:Transcript base:10
- 10 printOn:Transcript base:3
- 31 printOn:Transcript base:3
- -20 printOn:Transcript base:16
- -20 printOn:Transcript base:10
- Time millisecondsToRun:[10000 factorial printString] 7650
+ 3000 factorial printOn:Transcript base:10
+ 10 printOn:Transcript base:3
+ 31 printOn:Transcript base:3
+ -20 printOn:Transcript base:16
+ -20 printOn:Transcript base:10
+ Time millisecondsToRun:[10000 factorial printString] 7650
"
"Modified: / 20.1.1998 / 18:05:02 / stefan"
@@ -3329,12 +3329,12 @@
|stream string actualSize|
- stream := '' writeStream.
+ stream := WriteStream on:(String new:sz).
self printOn:stream base:baseInteger showRadix:false.
string := stream contents.
actualSize := string size.
actualSize < sz ifTrue:[
- aStream next:sz-actualSize put:fillCharacter.
+ aStream next:sz-actualSize put:fillCharacter.
].
aStream nextPutAll:string.
@@ -3465,12 +3465,12 @@
"return a string representation of the receiver in the specified
base; does NOT prepend XXr to the string.
See also: radixPrintStringRadix:
- printOn:base:showRadix:"
+ printOn:base:showRadix:"
|s|
s := WriteStream on:(String basicNew:20).
- self printOn:s base:base.
+ self printOn:s base:base showRadix:false.
^ s contents
"Created: / 19.1.1998 / 17:20:58 / stefan"
@@ -3662,6 +3662,7 @@
"Modified: 15.10.1997 / 18:43:49 / cg"
! !
+
!Integer methodsFor:'special bit operators'!
bitAnd_32:anInteger
@@ -4072,7 +4073,7 @@
!Integer class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.222 2009-03-23 14:50:47 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.223 2009-07-07 17:21:10 stefan Exp $'
! !
Integer initialize!