What is atoi equivalent for 64bit integer(uint64_t) in C that works on both Unix and Windows?

前端 未结 7 1672
失恋的感觉
失恋的感觉 2021-02-02 08:02

I\'m trying to convert 64bit integer string to integer, but I don\'t know which one to use.

7条回答
  •  我在风中等你
    2021-02-02 08:30

    Here we convert String consisting of HEX character to uint64_t hex value. All individual characters of string is converted to hex integer ony by one. For example in base 10 -> String = "123":

    • 1st loop : value is 1
    • 2nd loop : value is 1*10 + 2 = 12
    • 3rd loop : value is 12*10 + 3 = 123

    So like this logic is used to convert String of HEX character to uint_64hex value.

    uint64_t stringToUint_64(String value) {
      int stringLenght = value.length();
    
      uint64_t uint64Value = 0x0;
      for(int i = 0; i<=stringLenght-1; i++) {
        char charValue = value.charAt(i);
    
        uint64Value = 0x10 * uint64Value;
        uint64Value += stringToHexInt(charValue);
      }
    
      return uint64Value;
    }
    
    int stringToHexInt(char value) {
      switch(value) {
        case '0':
          return 0;
          break;
        case '1':
          return 0x1;
          break;
        case '2':
          return 0x2;
          break;
        case '3':
          return 0x3;
          break;
        case '4':
          return 0x4;
          break;
        case '5':
          return 0x5;
          break;
        case '6':
          return 0x6;
          break;
        case '7':
          return 0x7;
          break;
        case '8':
          return 0x8;
          break;
        case '9':
          return 0x9;
          break;
        case 'A':
        case 'a':
          return 0xA;
          break;
        case 'B':
        case 'b':
          return 0xB;
          break;
        case 'C':
        case 'c':
          return 0xC;
          break;
        case 'D':
        case 'd':
          return 0xD;
          break;
        case 'E':
        case 'e':
          return 0xE;
          break;
        case 'F':
        case 'f':
          return 0xF;
          break;
      }
    }
    

提交回复
热议问题