zoukankan      html  css  js  c++  java
  • 转的一个itoa实现(效率很高,并且能够正确处理INT_MIN)

    下面是网上找的一个itoa实现。刚开始觉得应该在函数最开始的时候判断value的正负,如果是负的就转化为正数,这样就不需要使用字符串“z-a9-0-9a-z”,而只需要使用“0-9a-z”。后来才发现这种方法不能正确的处理INT_MIN,因为-INT_MIN == INT_MIN,依然是负数!

        /**
         * C++ version 0.4 char* style "itoa":
         * Written by Lukás Chmela
         * Released under GPLv3.
         */
        char* itoa(int value, char* result, int base) {
            // check that the base if valid
            if (base < 2 || base > 36) { *result = '\0'; return result; }
        
            char* ptr = result, *ptr1 = result, tmp_char;
            int tmp_value;
        
            do {
                tmp_value = value;
                value /= base;
                *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];
            } while ( value );
        
            // Apply negative sign
            if (tmp_value < 0) *ptr++ = '-';
            *ptr-- = '\0';
            while(ptr1 < ptr) {
                tmp_char = *ptr;
                *ptr--= *ptr1;
                *ptr1++ = tmp_char;
            }
            return result;
        }
  • 相关阅读:
    异或运算
    GitHub使用简介
    归并排序
    快速排序
    字符串匹配
    Runner站立会议06
    Runner站立会议05
    Runner站立会议04
    记计账需求分析
    Runner站立会议03
  • 原文地址:https://www.cnblogs.com/isaiah/p/2733225.html
Copyright © 2011-2022 走看看