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   
Text File  |  2001-03-08  |  6KB  |  189 lines

  1. -- stack: in
  2. -- format: 10 (HyperCard 2)
  3. -- flags: 0x1000 (none)
  4. -- protect password hash: 0
  5. -- maximum user level: 5 (scripting)
  6. -- window: Rect(x1=208, y1=192, x2=624, y2=432)
  7. -- screen: Rect(x1=0, y1=0, x2=832, y2=624)
  8. -- card dimensions: w=416 h=240
  9. -- scroll: x=0 y=0
  10. -- background count: 1
  11. -- first background id: 2560
  12. -- card count: 1
  13. -- first card id: 3642
  14. -- list block id: 2156
  15. -- print block id: 0
  16. -- font table block id: 3433
  17. -- style table block id: 3188
  18. -- free block count: 4
  19. -- free size: 6752 bytes
  20. -- total size: 16384 bytes
  21. -- stack block size: 5632 bytes
  22. -- created by hypercard version: 0x02418000
  23. -- compacted by hypercard version: 0x02418000
  24. -- modified by hypercard version: 0x02418000
  25. -- opened by hypercard version: 0x02418000
  26. -- patterns[0]: 0x0000000000000000
  27. -- patterns[1]: 0x8000000008000000
  28. -- patterns[2]: 0x8800220088002200
  29. -- patterns[3]: 0x8888222288882222
  30. -- patterns[4]: 0x88AA22AA88AA22AA
  31. -- patterns[5]: 0xCCAA33AACCAA33AA
  32. -- patterns[6]: 0xEEAABBAAEEAABBAA
  33. -- patterns[7]: 0xEEBBBBEEEEBBBBEE
  34. -- patterns[8]: 0xFFBBFFEEFFBBFFEE
  35. -- patterns[9]: 0xFFBBFFFFFFBBFFFF
  36. -- patterns[10]: 0x8010022001084004
  37. -- patterns[11]: 0xFFFFFFFFFFFFFFFF
  38. -- patterns[12]: 0x8822882288228822
  39. -- patterns[13]: 0x1122448811224488
  40. -- patterns[14]: 0xC4800C6843023026
  41. -- patterns[15]: 0xB130031BD8C00C8D
  42. -- patterns[16]: 0xAA00AA00AA00AA00
  43. -- patterns[17]: 0x8822552288225522
  44. -- patterns[18]: 0x8855225588552255
  45. -- patterns[19]: 0x77DD77DD77DD77DD
  46. -- patterns[20]: 0x8000000000000000
  47. -- patterns[21]: 0xAA55AA55AA55AA55
  48. -- patterns[22]: 0x038448300C020101
  49. -- patterns[23]: 0x8244394482010101
  50. -- patterns[24]: 0x8814224188412214
  51. -- patterns[25]: 0x8080413E080814E3
  52. -- patterns[26]: 0x22048C7422179810
  53. -- patterns[27]: 0xBE808808EB088880
  54. -- patterns[28]: 0x25C8328964244C92
  55. -- patterns[29]: 0xA29C41BE2AC914EB
  56. -- patterns[30]: 0x40A00000040A0000
  57. -- patterns[31]: 0x8040200002040800
  58. -- patterns[32]: 0xAA00800088008000
  59. -- patterns[33]: 0xFF80808080808080
  60. -- patterns[34]: 0x081C22C180010204
  61. -- patterns[35]: 0xFF808080FF080808
  62. -- patterns[36]: 0xF87422478F172271
  63. -- patterns[37]: 0xBF00BFBFB0B0B0B0
  64. -- patterns[38]: 0xFF7FBE5DA2418000
  65. -- patterns[39]: 0xFAF5FAF5A050A050
  66. -- checksum: 0xDC73BEDD
  67. ----- HyperTalk script -----
  68. function baseConvertReal theNumber,sourceBase,destBase
  69. put realNumberFromAnyBaseToDecimal(sourceBase,theNumber) into t
  70. put realNumberFromDecimalToAnyBase(destBase,t) into u
  71. return u
  72. end baseConvertReal
  73.  
  74. function realNumberFromAnyBaseToDecimal base,aNumber
  75. if base = "Binary" then put 2 into base
  76. if base = "Quinary" then put 5 into base
  77. if base = "Octal" then put 8 into base
  78. if base = "Decimal" then put 10 into base
  79. if base = "Duodecimal" then put 12 into base
  80. if base = "Hexadecimal" then put 16 into base
  81. if base = "Vigesimal" then put 20 into base
  82. if base = "Bin" then put 2 into base
  83. if base = "Oct" then put 8 into base
  84. if base = "Dec" then put 10 into base
  85. if base = "Hex" then put 16 into base
  86. if base = 10 then return aNumber
  87. if the first char of aNumber = "-" then
  88.   put true into NisNeg
  89.   delete first char of aNumber
  90. else
  91.   put false into NisNeg
  92. end if
  93. put empty into integerPart
  94. put empty into realPart
  95. put 0 into integeriteration
  96. put (the number of chars in aNumber)+1 into realiteration
  97. repeat
  98.   add 1 to integeriteration
  99.   if char integeriteration of aNumber = "." then exit repeat
  100.   if char integeriteration of aNumber is empty then exit repeat
  101.   put char integeriteration of aNumber into t
  102.   if t is not a number then put ((the chartonum of t)-55) into t
  103.   put "," & t after integerPart
  104. end repeat
  105. if aNumber contains "." then
  106.   repeat
  107.     subtract 1 from realiteration
  108.     if char realiteration of aNumber = "." then exit repeat
  109.     if char realiteration of aNumber is empty then exit repeat
  110.     put char realiteration of aNumber into t
  111.     if t is not a number then put ((the chartonum of t)-55) into t
  112.     put "," & t after realPart
  113.   end repeat
  114. end if
  115. delete first char of realpart
  116. delete first char of integerpart
  117. if integerpart is empty then put "0" into integerPart
  118. if realpart is empty then put "0" into realPart
  119. put 0 into intacc
  120. put 0 into realacc
  121. repeat with x = 1 to the number of items in integerPart
  122.   multiply intacc by base
  123.   add item x of integerPart to intacc
  124. end repeat
  125. repeat with x = 1 to the number of items in realPart
  126.   add item x of realPart to realacc
  127.   divide realacc by base
  128. end repeat
  129. delete char 1 of realacc
  130. put intacc & realacc into newNumber
  131. repeat until the last char of newNumber <> "0"
  132.   delete last char of newNumber
  133. end repeat
  134. repeat until the first char of newNumber <> "0"
  135.   delete first char of newNumber
  136. end repeat
  137. if NisNeg then return (newNumber * (-1))
  138. return newNumber
  139. end realNumberFromAnyBaseToDecimal
  140.  
  141. function realNumberFromDecimalToAnyBase base,aNumber
  142. if base = "Binary" then put 2 into base
  143. if base = "Quinary" then put 5 into base
  144. if base = "Octal" then put 8 into base
  145. if base = "Decimal" then put 10 into base
  146. if base = "Duodecimal" then put 12 into base
  147. if base = "Hexadecimal" then put 16 into base
  148. if base = "Vigesimal" then put 20 into base
  149. if base = "Bin" then put 2 into base
  150. if base = "Oct" then put 8 into base
  151. if base = "Dec" then put 10 into base
  152. if base = "Hex" then put 16 into base
  153. if base = 10 then return aNumber
  154. if aNumber < 0 then
  155.   put true into NisNeg
  156.   put abs(aNumber) into aNumber
  157. else
  158.   put false into NisNeg
  159. end if
  160. put aNumber DIV 1 into ipart
  161. put aNumber MOD 1 into rpart
  162. put empty into iacc
  163. put empty into racc
  164. repeat until ipart = 0
  165.   --put ipart MOD base before iacc
  166.   put ipart MOD base into t
  167.   if t > 9 then put the numtochar of (t+55) into t
  168.   put t before iacc
  169.   put ipart DIV base into ipart
  170. end repeat
  171. repeat 15
  172.   --put (rpart * base) DIV 1 after racc
  173.   put (rpart * base) DIV 1 into t
  174.   if t > 9 then put the numtochar of (t+55) into t
  175.   put t after racc
  176.   put (rpart * base) MOD 1 into rpart
  177. end repeat
  178. put iacc & "." & racc into newNumber
  179. repeat until the last char of newNumber <> "0"
  180.   delete last char of newNumber
  181. end repeat
  182. repeat until the first char of newNumber <> "0"
  183.   delete first char of newNumber
  184. end repeat
  185. if the last char of newNumber = "." then delete last char of newNumber
  186. if NisNeg then put "-" before newNumber
  187. return newNumber
  188. end realNumberFromDecimalToAnyBase
  189.