Mercurial > vba-clojure
view src/win32/7zip/7z/CPP/Common/StringToInt.cpp @ 4:5f6f2134e8ce
apu appears to not be used
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:35:58 -0600 |
parents | f9f4f1b99eed |
children |
line wrap: on
line source
1 // Common/StringToInt.cpp3 #include "StdAfx.h"5 #include "StringToInt.h"7 UInt64 ConvertStringToUInt64(const char *s, const char **end)8 {9 UInt64 result = 0;10 for (;;)11 {12 char c = *s;13 if (c < '0' || c > '9')14 {15 if (end != NULL)16 *end = s;17 return result;18 }19 result *= 10;20 result += (c - '0');21 s++;22 }23 }25 UInt64 ConvertOctStringToUInt64(const char *s, const char **end)26 {27 UInt64 result = 0;28 for (;;)29 {30 char c = *s;31 if (c < '0' || c > '7')32 {33 if (end != NULL)34 *end = s;35 return result;36 }37 result <<= 3;38 result += (c - '0');39 s++;40 }41 }43 UInt64 ConvertHexStringToUInt64(const char *s, const char **end)44 {45 UInt64 result = 0;46 for (;;)47 {48 char c = *s;49 UInt32 v;50 if (c >= '0' && c <= '9') v = (c - '0');51 else if (c >= 'A' && c <= 'F') v = 10 + (c - 'A');52 else if (c >= 'a' && c <= 'f') v = 10 + (c - 'a');53 else54 {55 if (end != NULL)56 *end = s;57 return result;58 }59 result <<= 4;60 result |= v;61 s++;62 }63 }66 UInt64 ConvertStringToUInt64(const wchar_t *s, const wchar_t **end)67 {68 UInt64 result = 0;69 for (;;)70 {71 wchar_t c = *s;72 if (c < '0' || c > '9')73 {74 if (end != NULL)75 *end = s;76 return result;77 }78 result *= 10;79 result += (c - '0');80 s++;81 }82 }85 Int64 ConvertStringToInt64(const char *s, const char **end)86 {87 if (*s == '-')88 return -(Int64)ConvertStringToUInt64(s + 1, end);89 return ConvertStringToUInt64(s, end);90 }