Mercurial > repos > tabletprog
comparison modules/string.tp @ 158:38140b7dbe3d
Add parseHex32 and parseHex64 to string objects
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 10 Aug 2013 15:20:38 -0700 |
parents | 55e0dca7d3d7 |
children | 5b830147c1cd |
comparison
equal
deleted
inserted
replaced
157:55e0dca7d3d7 | 158:38140b7dbe3d |
---|---|
72 intret <- (obj_int32 ptr) | 72 intret <- (obj_int32 ptr) |
73 } andCode: { | 73 } andCode: { |
74 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 | 74 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 |
75 intret num!: (atoi: data) | 75 intret num!: (atoi: data) |
76 intret | 76 intret |
77 } | |
78 | |
79 parseHex32 <- { | |
80 num <- 0u32 | |
81 cur <- 0 | |
82 a <- uint32: ("a" byte: 0) | |
83 A <- uint32: ("A" byte: 0) | |
84 f <- uint32: ("f" byte: 0) | |
85 F <- uint32: ("F" byte: 0) | |
86 zero <- "0" byte: 0 | |
87 nine <- "9" byte: 0 | |
88 while: { cur < byte_length} do: { | |
89 b <- uint32: (byte: cur) | |
90 cur <- cur + 1 | |
91 if: b >= zero && b <= nine { | |
92 num <- num * 16 + (b - zero) | |
93 } else: { | |
94 if: b >= a && b <= f { | |
95 num <- num * 16 + (b - a) + 10u32 | |
96 } else: { | |
97 if: b >= A && b <= F { | |
98 num <- num * 16 + (b - A) + 10u32 | |
99 } else: { | |
100 cur <- byte_length | |
101 } | |
102 } | |
103 } | |
104 } | |
105 num | |
106 } | |
107 | |
108 parseHex64 <- { | |
109 num <- 0u64 | |
110 cur <- 0 | |
111 a <- uint64: ("a" byte: 0) | |
112 A <- uint64: ("A" byte: 0) | |
113 f <- uint64: ("f" byte: 0) | |
114 F <- uint64: ("F" byte: 0) | |
115 zero <- "0" byte: 0 | |
116 nine <- "9" byte: 0 | |
117 while: { cur < byte_length} do: { | |
118 b <- uint64: (byte: cur) | |
119 cur <- cur + 1 | |
120 if: b >= zero && b <= nine { | |
121 num <- num * 16 + (b - zero) | |
122 } else: { | |
123 if: b >= a && b <= f { | |
124 num <- num * 16 + (b - a) + 10u64 | |
125 } else: { | |
126 if: b >= A && b <= F { | |
127 num <- num * 16 + (b - A) + 10u64 | |
128 } else: { | |
129 cur <- byte_length | |
130 } | |
131 } | |
132 } | |
133 } | |
134 num | |
77 } | 135 } |
78 | 136 |
79 llMessage: hash withVars: { | 137 llMessage: hash withVars: { |
80 intret <- (obj_int32 ptr) | 138 intret <- (obj_int32 ptr) |
81 i <- uint32_t | 139 i <- uint32_t |