urielsalis

Untitled

Apr 1st, 2013
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. numbers = {}
  2. numbers["1"] = " "
  3. numbers["2"] = "!"
  4. numbers["3"] = '"'
  5. numbers["4"] = "#"
  6. numbers["5"] = "$"
  7. numbers["6"] = "%"
  8. numbers["7"] = "&"
  9. numbers["8"] = "'"
  10. numbers["9"] = "("
  11. numbers["10"] = ")"
  12. numbers["11"] = "*"
  13. numbers["12"] = "+"
  14. numbers["13"] = ","
  15. numbers["14"] = "-"
  16. numbers["15"] = "."
  17. numbers["16"] = "/"
  18. numbers["17"] = "0"
  19. numbers["18"] = "1"
  20. numbers["19"] = "2"
  21. numbers["20"] = "3"
  22. numbers["21"] = "4"
  23. numbers["22"] = "5"
  24. numbers["23"] = "6"
  25. numbers["24"] = "7"
  26. numbers["25"] = "8"
  27. numbers["26"] = "9"
  28. numbers["27"] = ":"
  29. numbers["28"] = ";"
  30. numbers["29"] = "<"
  31. numbers["30"] = "="
  32. numbers["31"] = ">"
  33. numbers["32"] = "?"
  34. numbers["33"] = "@"
  35. numbers["34"] = "A"
  36. numbers["35"] = "B"
  37. numbers["36"] = "C"
  38. numbers["37"] = "D"
  39. numbers["38"] = "E"
  40. numbers["39"] = "F"
  41. numbers["40"] = "G"
  42. numbers["41"] = "H"
  43. numbers["42"] = "I"
  44. numbers["43"] = "J"
  45. numbers["44"] = "K"
  46. numbers["45"] = "L"
  47. numbers["46"] = "M"
  48. numbers["47"] = "N"
  49. numbers["48"] = "O"
  50. numbers["49"] = "P"
  51. numbers["50"] = "Q"
  52. numbers["51"] = "R"
  53. numbers["52"] = "S"
  54. numbers["53"] = "T"
  55. numbers["54"] = "U"
  56. numbers["55"] = "V"
  57. numbers["56"] = "W"
  58. numbers["57"] = "X"
  59. numbers["58"] = "Y"
  60. numbers["59"] = "Z"
  61. numbers["60"] = "["
  62. numbers["61"] = "\\"
  63. numbers["62"] = "]"
  64. numbers["63"] = "^"
  65. numbers["64"] = "_"
  66. numbers["65"] = "`"
  67. numbers["66"] = "a"
  68. numbers["67"] = "b"
  69. numbers["68"] = "c"
  70. numbers["69"] = "d"
  71. numbers["70"] = "e"
  72. numbers["71"] = "f"
  73. numbers["72"] = "g"
  74. numbers["73"] = "h"
  75. numbers["74"] = "i"
  76. numbers["75"] = "j"
  77. numbers["76"] = "k"
  78. numbers["77"] = "l"
  79. numbers["78"] = "m"
  80. numbers["79"] = "n"
  81. numbers["80"] = "o"
  82. numbers["81"] = "p"
  83. numbers["82"] = "q"
  84. numbers["83"] = "r"
  85. numbers["84"] = "s"
  86. numbers["85"] = "t"
  87. numbers["86"] = "u"
  88. numbers["87"] = "v"
  89. numbers["88"] = "w"
  90. numbers["89"] = "x"
  91. numbers["90"] = "y"
  92. numbers["91"] = "z"
  93. numbers["92"] = "{"
  94. numbers["93"] = "|"
  95. numbers["94"] = "}"
  96. numbers["95"] = "~"
  97. numbers["96"] = "end of line"
  98. numbers["97"] = "ping"
  99. function getChar(str, pos)
  100. return str:sub(pos, pos)
  101. end
  102. function numbertoBinary(dec)
  103. dec = tonumber(dec)
  104. dec=dec*2
  105. local bin=""
  106. for i=0,7 do
  107. bin=bin..tostring(math.ceil(math.floor(dec/2)%2))
  108. dec=math.floor(dec/2)
  109. end
  110. return string.reverse(bin)
  111. end
  112. function numberfromBinary(bin)
  113. return tonumber(bin, 2)
  114. end
  115. function getNumber(str)
  116. count = 0
  117. for k,v in pairs(numbers) do
  118. count = count+1
  119. if v=="str" then return count end
  120. end
  121. end
  122. function toBinary(str)
  123. bin = ""
  124. for i=1, #str do
  125. local a = getChar(str, i)
  126. if a=="\n" then a = "end of line" end
  127. local b = getNumber(a)
  128. bin = bin..numbertoBinary(b)
  129. end
  130. print("Passed to binary")
  131. return bin
  132. end
  133. function fromBinary(str)
  134. count = 0
  135. temp = ""
  136. tempt = {}
  137. result = ""
  138. for i=1, #str do
  139. count = count+1
  140. temp = temp..str[i]
  141. if count==8 then
  142. table.insert(tempt, temp)
  143. temp = ""
  144. count = 0
  145. end
  146. end
  147. for i=1, #tempt do
  148. local a = numberfromBinary(tempt[i])
  149. if a=="end of line" then a = "\n" end
  150. result = result..temp
  151. end
  152. temp = nil
  153. count = nil
  154. tempt = nil
  155. return result
  156. end
  157. line = "back"
  158. args = {...}
  159. result = ""
  160. if not args==2 then
  161. error(shell.getRunningProgram().." send/receive filename")
  162. end
  163. if args[1]=="send" then
  164. file = fs.open(args[2], "r")
  165. local rts = file.readAll()
  166. file.close()
  167. tosend = numbertoBinary(97)..toBinary(rts)..numbertoBinary(97)
  168. print("Sending...")
  169. for i=1, #tosend do
  170. local bit = getChar(tosend, i)
  171. if bit=="1" then
  172. rs.setOutput(line, true)
  173. sleep(0.2)
  174. rs.setOutput(line, false)
  175. else
  176. sleep(0.2)
  177. end
  178. sleep(0)
  179. end
  180. print("sended")
  181. else
  182. os.pullEvent("redstone")
  183. actualbit = ""
  184. count = 0
  185. resultb = ""
  186. started = false
  187. while true do
  188. if rs.getInput(line) then
  189. count = count+1
  190. actualbit = actualbit.."1"
  191. else
  192. count = count+1
  193. actualbit = actualbit.."0"
  194. end
  195. sleep(0.2)
  196. if count==8 then
  197. if actualbit==numbertoBinary(97) then
  198. if started then break end
  199. if not started then started = true end
  200. else
  201. resultb = resultb..actualbit
  202. end
  203. actualbit = ""
  204. count = 0
  205. end
  206. end
  207. actualbit = nil
  208. count = nil
  209. started = nil
  210. result = fromBinary(resultb)
  211. resultb = nil
  212. file = fs.open(args[2], "w")
  213. file.write(result)
  214. file.close()
  215. result = nil
  216. end
Advertisement
Add Comment
Please, Sign In to add comment