1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
| //
| // Created by YY on 2019/12/23.
| //
|
| #include "num.h"
|
| long str2int(const uint8_t *s, uint16_t length)
| {
| uint16_t i;
| long n = 0;
| bool sign = false;
|
| for(i = 0; i < length; i++)
| {
|
| if(s[i] >= '0' && s[i] <= '9') {
| n = n*10 + s[i] - '0';
| } else if (i == 0 && s[i]=='-') {
| sign = true;
| }
| }
|
| if (sign) {
| n = 0-n;
| }
|
| return n;
| }
|
| bool str2float(double *f, const uint8_t *s, uint16_t length)
| {
| bool sign = false;
| bool getDecimal = false;
| uint16_t i;
| uint64_t m = 0, n = 1;
| double x;
|
| *f = 0.0;
|
| for(i = 0; i < length; i++)
| {
| if(s[i] == '-' || s[i] == '+') {
| if(i == 0) {
| if (s[i] == '-') {
| sign = true;
| }
| }
| else {
| return false;
| }
| }
| else if(s[i] == '.') {
| if(getDecimal == true) {
| return false;
| }
| getDecimal = true;
| }
| else if(s[i] >= '0' && s[i] <= '9') {
| m = m*10 + s[i] - '0';
| if(getDecimal == true) {
| n *= 10;
| }
| }
| else {
| return false;
| }
| }
|
| x = (double)m / (double)n;
| if(sign) {
| x = 0.0 - x;
| }
| *f = x;
|
| return true;
| }
|
|