Rev 1227 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1227 | Rev 1380 | ||
|---|---|---|---|
| Line 51... | Line 51... | ||
| 51 | { |
51 | { |
| 52 | if (bin[n] == '1') |
52 | if (bin[n] == '1') |
| 53 | num += (unsigned int)pow(2.0f, (int)(bin.length()-1-n)); |
53 | num += (unsigned int)pow(2.0f, (int)(bin.length()-1-n)); |
| 54 | } |
54 | } |
| 55 | 55 | ||
| - | 56 | return num; |
|
| - | 57 | } |
|
| - | 58 | ||
| - | 59 | int bin2int(string bin) |
|
| - | 60 | { |
|
| - | 61 | int num = 0; |
|
| - | 62 | if (bin[0] == '1') { |
|
| - | 63 | for (int n = bin.length()-1; n >= 0; n--) |
|
| - | 64 | { |
|
| - | 65 | if (bin[n] == '0') |
|
| - | 66 | num += (unsigned int)pow(2.0f, (int)(bin.length()-1-n)); |
|
| - | 67 | } |
|
| - | 68 | num = (num*(-1)) -1; |
|
| - | 69 | } else { |
|
| - | 70 | for (int n = bin.length()-1; n >= 0; n--) |
|
| - | 71 | { |
|
| - | 72 | if (bin[n] == '1') |
|
| - | 73 | num += (unsigned int)pow(2.0f, (int)(bin.length()-1-n)); |
|
| - | 74 | } |
|
| - | 75 | } |
|
| 56 | return num; |
76 | return num; |
| 57 | } |
77 | } |
| 58 | 78 | ||
| 59 | string invert(string bin) |
79 | string invert(string bin) |
| 60 | { |
80 | { |
| Line 67... | Line 87... | ||
| 67 | } |
87 | } |
| 68 | 88 | ||
| 69 | float bin2float(string bin) |
89 | float bin2float(string bin) |
| 70 | { |
90 | { |
| 71 | float num = 0; |
91 | float num = 0; |
| 72 | 92 | ||
| 73 | if (bin.length() == 0) |
93 | if (bin.length() == 0) |
| 74 | return 0.0f; |
94 | return 0.0f; |
| 75 | 95 | ||
| 76 | bool isNegative = false;; |
96 | bool isNegative = false;; |
| 77 | 97 | ||
| 78 | if (bin[0] == '1') |
98 | if (bin[0] == '1') |
| 79 | { |
99 | { |
| 80 | bin = invert(bin); |
100 | bin = invert(bin); |
| 81 | isNegative = true; |
101 | isNegative = true; |
| 82 | } |
102 | } |
| 83 | 103 | ||
| 84 | for (int n = bin.length()-1; n > 0; n--) |
104 | for (int n = bin.length()-1; n > 0; n--) |
| 85 | { |
105 | { |
| 86 | if (bin[n] == '1') |
106 | if (bin[n] == '1') |
| 87 | num += pow(2.0f, (int)(bin.length()-1-n)); |
107 | num += pow(2.0f, (int)(bin.length()-1-n)); |
| 88 | } |
108 | } |
| 89 | 109 | ||
| 90 | num /= 64.0f; |
110 | num /= 64.0f; |
| 91 | 111 | ||
| 92 | if (isNegative) |
112 | if (isNegative) |
| 93 | num = -num; |
113 | num = -num; |
| 94 | 114 | ||
| 95 | return num; |
115 | return num; |
| 96 | } |
116 | } |
| 97 | 117 | ||
| 98 | string bin2hex(string bin) |
118 | string bin2hex(string bin) |
| 99 | { |
119 | { |
| 100 | string hex; |
120 | string hex; |
| 101 | 121 | ||
| 102 | while (bin.size() > 0) |
122 | while (bin.size() > 0) |
| 103 | { |
123 | { |
| 104 | string part; |
124 | string part; |
| Line 155... | Line 175... | ||
| 155 | 175 | ||
| 156 | return hex; |
176 | return hex; |
| 157 | } |
177 | } |
| 158 | 178 | ||
| 159 | string float2bin(float num, int length) |
179 | string float2bin(float num, int length) |
| 160 | { |
180 | { |
| - | 181 | // This is 16 bits, 6 bits is the decimal |
|
| 161 | string bin; |
182 | string bin; |
| 162 | - | ||
| 163 |
|
183 | num = num*64; |
| 164 | - | ||
| 165 | while (bin.size() < length) |
- | |
| 166 |
|
184 | int16_t temp = (int16_t)num; |
| 167 | - | ||
| 168 | return |
185 | return int2bin(temp, length); |
| 169 | } |
186 | } |
| 170 | 187 | ||
| 171 | string hex2bin(string hex) |
188 | string hex2bin(string hex) |
| 172 | { |
189 | { |
| 173 | hex = strtolower(hex); |
190 | hex = strtolower(hex); |
| Line 196... | Line 213... | ||
| 196 | case 'f': bin += "1111"; break; |
213 | case 'f': bin += "1111"; break; |
| 197 | } |
214 | } |
| 198 | } |
215 | } |
| 199 | 216 | ||
| 200 | return bin; |
217 | return bin; |
| 201 | } |
218 | } |
| 202 | 219 | ||
| 203 | string uint2bin(unsigned int num, int length) |
220 | string uint2bin(unsigned int num, int length) |
| 204 | { |
221 | { |
| - | 222 | string bin; |
|
| - | 223 | while (num) |
|
| - | 224 | { |
|
| - | 225 | bin = char((num&1)+'0') + bin; |
|
| - | 226 | num >>= 1; |
|
| - | 227 | } |
|
| - | 228 | ||
| - | 229 | while (bin.size() < length) |
|
| - | 230 | bin = "0" + bin; |
|
| - | 231 | ||
| - | 232 | string bin2; |
|
| - | 233 | for (int i = 0; i < length; i++) |
|
| - | 234 | { |
|
| - | 235 | bin2 = bin2 + bin[i]; |
|
| - | 236 | } |
|
| - | 237 | ||
| - | 238 | return bin2; |
|
| - | 239 | } |
|
| - | 240 | ||
| - | 241 | string int2bin(int num, int length) |
|
| - | 242 | { |
|
| 205 | string bin; |
243 | string bin; |
| - | 244 | if (num < 0) { |
|
| - | 245 | num *= -1; |
|
| - | 246 | num -= 1; |
|
| - | 247 | while (num) |
|
| - | 248 | { |
|
| - | 249 | bin = char((num&1)+'0') + bin; |
|
| - | 250 | num >>= 1; |
|
| - | 251 | } |
|
| - | 252 | ||
| - | 253 | while (bin.size() < length) |
|
| - | 254 | bin = "0" + bin; |
|
| - | 255 | for (int i = 0; i < length; i++) |
|
| - | 256 | { |
|
| - | 257 | if (bin[i] == '0') |
|
| - | 258 | bin[i] = '1'; |
|
| - | 259 | else |
|
| - | 260 | bin[i] = '0'; |
|
| - | 261 | } |
|
| - | 262 | } else { |
|
| 206 | while (num) |
263 | while (num) |
| 207 | { |
264 | { |
| 208 | bin = char((num&1)+'0') + bin; |
265 | bin = char((num&1)+'0') + bin; |
| 209 | num >>= 1; |
266 | num >>= 1; |
| 210 | } |
267 | } |
| 211 | 268 | ||
| 212 | while (bin.size() < length) |
269 | while (bin.size() < length) |
| 213 | bin = "0" + bin; |
270 | bin = "0" + bin; |
| - | 271 | ||
| 214 | 272 | } |
|
| 215 | string bin2; |
273 | string bin2; |
| 216 | for (int i = 0; i < length; i++) |
274 | for (int i = 0; i < length; i++) |
| 217 | { |
275 | { |
| 218 | bin2 = bin2 + bin[i]; |
276 | bin2 = bin2 + bin[i]; |
| 219 | } |
277 | } |
| 220 | 278 | ||
| 221 | return bin2; |
279 | return bin2; |
| - | 280 | } |
|
| - | 281 | ||
| - | 282 | string int2hex(int num, int length) |
|
| - | 283 | { |
|
| - | 284 | return bin2hex(int2bin(num, length)); |
|
| 222 | } |
285 | } |
| 223 | 286 | ||
| 224 | string uint2hex(unsigned int num, int length) |
287 | string uint2hex(unsigned int num, int length) |
| 225 | { |
288 | { |
| 226 | return bin2hex(uint2bin(num, length)); |
289 | return bin2hex(uint2bin(num, length)); |