summaryrefslogtreecommitdiff
path: root/two/conv.c
diff options
context:
space:
mode:
authorMichael Hunteman <michael@huntm.net>2023-07-04 17:03:53 -0500
committerMichael Hunteman <michael@huntm.net>2023-07-06 17:23:45 -0500
commitbfce8f0d0d828209ec0bec71371ee94a7ad62d3e (patch)
treebdf49ca788ca1ca030d5b1cccfd0c9dffeb3f69f /two/conv.c
Initial commit
Diffstat (limited to 'two/conv.c')
-rw-r--r--two/conv.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/two/conv.c b/two/conv.c
new file mode 100644
index 0000000..7bf218a
--- /dev/null
+++ b/two/conv.c
@@ -0,0 +1,49 @@
+#include <stdio.h>
+
+int
+lower(int c)
+{
+ if (c >= 'A' && c <= 'Z') {
+ return c + 'a' - 'A';
+ } else {
+ return c;
+ }
+}
+
+int
+atoi(char s[])
+{
+ int i, n;
+
+ n = 0;
+ for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) {
+ n = 10 * n + (s[i] - '0');
+ }
+ return n;
+}
+
+/* convert string of hex digits into int digits */
+int
+htoi(char s[])
+{
+ int i, n;
+
+ n = 0;
+ for (i = 0; s[i] >= '0' && s[i] <= 'f'; ++i) {
+ if (s[i] >= '0' && s[i] <= '9') {
+ n = 16 * n + (s[i] - '0');
+ } else if (s[i] >= 'A' && s[i] <= 'F') {
+ n = 16 * n + (s[i] - 'A' + 10);
+ } else if (s[i] >= 'a' && s[i] <= 'f') {
+ n = 16 * n + (s[i] - 'a' + 10);
+ }
+ }
+ return n;
+}
+
+int
+main()
+{
+ printf("%d\n", htoi("1f"));
+ return 0;
+}