- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /*整整型转换为字符串*/
- int ll2string(char *s, size_t len, long long value) {
- char buf[32], *p;
- unsigned long long v;
- size_t l;
- if (len == 0) return 0;
- v = (value < 0) ? -value : value;
- p = buf+31;
- do {
- *p-- = '0'+(v%10);
- v /= 10;
- } while(v);
- if (value < 0) *p-- = '-';
- p++;
- l = 32-(p-buf);
- if (l+1 > len) l = len-1;
- memcpy(s,p,l);
- s[l] = '\\0';
- return l;
- }
- /*字符串转化位整数*/
- int string2ll(const char *s, size_t slen, long long *value) {
- const char *p = s;
- size_t plen = 0;
- int negative = 0;
- unsigned long long v;
- if (plen == slen)
- return 0;
- if (slen == 1 && p[0] == '0') {
- if (value != NULL) *value = 0;
- return 1;
- }
- if (p[0] == '-') {
- negative = 1;
- p++; plen++;
- if (plen == slen)
- return 0;
- }
- if (p[0] >= '1' && p[0] <= '9') {
- v = p[0]-'0';
- p++; plen++;
- } else if (p[0] == '0' && slen == 1) {
- *value = 0;
- return 1;
- } else {
- return 0;
- }
- while (plen < slen && p[0] >= '0' && p[0] <= '9') {
- v *= 10;
- v += p[0]-'0';
- p++; plen++;
- }
- if (plen < slen)
- return 0;
- if (negative) {
- if (value != NULL) *value = -v;
- } else {
- if (value != NULL) *value = v;
- }
- return 1;
- }
- int main(){
- long long v;
- string2ll("122",3,&v);
- printf("%d\\n",v);
- char buf[32];
- ll2string(buf,sizeof(buf),v);
- printf("%s\\n",buf);
- }
- //该片段来自于http://www.codesnippet.cn/detail/0707201513033.html
来源: http://www.codesnippet.cn/detail/0707201513033.html