home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacPeople 2001 June 15
/
MACPEOPLE-2001-06-15.ISO.7z
/
MACPEOPLE-2001-06-15.ISO
/
オンラインウエア
/
新着!オンラインウエア16
/
KHyX.sit
/
KHyX
/
Modules
/
HMNumberSystems
/
stack.txt
< prev
Wrap
Text File
|
2001-03-08
|
6KB
|
189 lines
-- stack: in
-- format: 10 (HyperCard 2)
-- flags: 0x1000 (none)
-- protect password hash: 0
-- maximum user level: 5 (scripting)
-- window: Rect(x1=208, y1=192, x2=624, y2=432)
-- screen: Rect(x1=0, y1=0, x2=832, y2=624)
-- card dimensions: w=416 h=240
-- scroll: x=0 y=0
-- background count: 1
-- first background id: 2560
-- card count: 1
-- first card id: 3642
-- list block id: 2156
-- print block id: 0
-- font table block id: 3433
-- style table block id: 3188
-- free block count: 4
-- free size: 6752 bytes
-- total size: 16384 bytes
-- stack block size: 5632 bytes
-- created by hypercard version: 0x02418000
-- compacted by hypercard version: 0x02418000
-- modified by hypercard version: 0x02418000
-- opened by hypercard version: 0x02418000
-- patterns[0]: 0x0000000000000000
-- patterns[1]: 0x8000000008000000
-- patterns[2]: 0x8800220088002200
-- patterns[3]: 0x8888222288882222
-- patterns[4]: 0x88AA22AA88AA22AA
-- patterns[5]: 0xCCAA33AACCAA33AA
-- patterns[6]: 0xEEAABBAAEEAABBAA
-- patterns[7]: 0xEEBBBBEEEEBBBBEE
-- patterns[8]: 0xFFBBFFEEFFBBFFEE
-- patterns[9]: 0xFFBBFFFFFFBBFFFF
-- patterns[10]: 0x8010022001084004
-- patterns[11]: 0xFFFFFFFFFFFFFFFF
-- patterns[12]: 0x8822882288228822
-- patterns[13]: 0x1122448811224488
-- patterns[14]: 0xC4800C6843023026
-- patterns[15]: 0xB130031BD8C00C8D
-- patterns[16]: 0xAA00AA00AA00AA00
-- patterns[17]: 0x8822552288225522
-- patterns[18]: 0x8855225588552255
-- patterns[19]: 0x77DD77DD77DD77DD
-- patterns[20]: 0x8000000000000000
-- patterns[21]: 0xAA55AA55AA55AA55
-- patterns[22]: 0x038448300C020101
-- patterns[23]: 0x8244394482010101
-- patterns[24]: 0x8814224188412214
-- patterns[25]: 0x8080413E080814E3
-- patterns[26]: 0x22048C7422179810
-- patterns[27]: 0xBE808808EB088880
-- patterns[28]: 0x25C8328964244C92
-- patterns[29]: 0xA29C41BE2AC914EB
-- patterns[30]: 0x40A00000040A0000
-- patterns[31]: 0x8040200002040800
-- patterns[32]: 0xAA00800088008000
-- patterns[33]: 0xFF80808080808080
-- patterns[34]: 0x081C22C180010204
-- patterns[35]: 0xFF808080FF080808
-- patterns[36]: 0xF87422478F172271
-- patterns[37]: 0xBF00BFBFB0B0B0B0
-- patterns[38]: 0xFF7FBE5DA2418000
-- patterns[39]: 0xFAF5FAF5A050A050
-- checksum: 0xDC73BEDD
----- HyperTalk script -----
function baseConvertReal theNumber,sourceBase,destBase
put realNumberFromAnyBaseToDecimal(sourceBase,theNumber) into t
put realNumberFromDecimalToAnyBase(destBase,t) into u
return u
end baseConvertReal
function realNumberFromAnyBaseToDecimal base,aNumber
if base = "Binary" then put 2 into base
if base = "Quinary" then put 5 into base
if base = "Octal" then put 8 into base
if base = "Decimal" then put 10 into base
if base = "Duodecimal" then put 12 into base
if base = "Hexadecimal" then put 16 into base
if base = "Vigesimal" then put 20 into base
if base = "Bin" then put 2 into base
if base = "Oct" then put 8 into base
if base = "Dec" then put 10 into base
if base = "Hex" then put 16 into base
if base = 10 then return aNumber
if the first char of aNumber = "-" then
put true into NisNeg
delete first char of aNumber
else
put false into NisNeg
end if
put empty into integerPart
put empty into realPart
put 0 into integeriteration
put (the number of chars in aNumber)+1 into realiteration
repeat
add 1 to integeriteration
if char integeriteration of aNumber = "." then exit repeat
if char integeriteration of aNumber is empty then exit repeat
put char integeriteration of aNumber into t
if t is not a number then put ((the chartonum of t)-55) into t
put "," & t after integerPart
end repeat
if aNumber contains "." then
repeat
subtract 1 from realiteration
if char realiteration of aNumber = "." then exit repeat
if char realiteration of aNumber is empty then exit repeat
put char realiteration of aNumber into t
if t is not a number then put ((the chartonum of t)-55) into t
put "," & t after realPart
end repeat
end if
delete first char of realpart
delete first char of integerpart
if integerpart is empty then put "0" into integerPart
if realpart is empty then put "0" into realPart
put 0 into intacc
put 0 into realacc
repeat with x = 1 to the number of items in integerPart
multiply intacc by base
add item x of integerPart to intacc
end repeat
repeat with x = 1 to the number of items in realPart
add item x of realPart to realacc
divide realacc by base
end repeat
delete char 1 of realacc
put intacc & realacc into newNumber
repeat until the last char of newNumber <> "0"
delete last char of newNumber
end repeat
repeat until the first char of newNumber <> "0"
delete first char of newNumber
end repeat
if NisNeg then return (newNumber * (-1))
return newNumber
end realNumberFromAnyBaseToDecimal
function realNumberFromDecimalToAnyBase base,aNumber
if base = "Binary" then put 2 into base
if base = "Quinary" then put 5 into base
if base = "Octal" then put 8 into base
if base = "Decimal" then put 10 into base
if base = "Duodecimal" then put 12 into base
if base = "Hexadecimal" then put 16 into base
if base = "Vigesimal" then put 20 into base
if base = "Bin" then put 2 into base
if base = "Oct" then put 8 into base
if base = "Dec" then put 10 into base
if base = "Hex" then put 16 into base
if base = 10 then return aNumber
if aNumber < 0 then
put true into NisNeg
put abs(aNumber) into aNumber
else
put false into NisNeg
end if
put aNumber DIV 1 into ipart
put aNumber MOD 1 into rpart
put empty into iacc
put empty into racc
repeat until ipart = 0
--put ipart MOD base before iacc
put ipart MOD base into t
if t > 9 then put the numtochar of (t+55) into t
put t before iacc
put ipart DIV base into ipart
end repeat
repeat 15
--put (rpart * base) DIV 1 after racc
put (rpart * base) DIV 1 into t
if t > 9 then put the numtochar of (t+55) into t
put t after racc
put (rpart * base) MOD 1 into rpart
end repeat
put iacc & "." & racc into newNumber
repeat until the last char of newNumber <> "0"
delete last char of newNumber
end repeat
repeat until the first char of newNumber <> "0"
delete first char of newNumber
end repeat
if the last char of newNumber = "." then delete last char of newNumber
if NisNeg then put "-" before newNumber
return newNumber
end realNumberFromDecimalToAnyBase