Program Listing for File to_alnum.hpp

Return to documentation for file (include/dish2/utility/to_alnum.hpp)

#pragma once
#ifndef DISH2_UTILITY_TO_ALNUM_HPP_INCLUDE
#define DISH2_UTILITY_TO_ALNUM_HPP_INCLUDE

#include <cstddef>
#include <cstring>

#include "../../../third-party/Empirical/include/emp/base/vector.hpp"
#include "../../../third-party/Empirical/include/emp/datastructs/hash_utils.hpp"
#include "../../../third-party/Empirical/include/emp/polyfill/span.hpp"
#include "../../../third-party/PicoSHA2/picosha2.h"

namespace dish2 {

std::string to_alnum(size_t i) {

  static const char alnum[]
    = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz";
  const size_t len = sizeof(alnum) - 1;

  std::string res;
  res.reserve( sizeof( size_t ) * 2 );

  while ( i ) {
    res.push_back( alnum[i % len] );
    i /= len;
  }

  return res;

}

} // namespace dish2

#endif // #ifndef DISH2_UTILITY_TO_ALNUM_HPP_INCLUDE