MCPcopy Create free account
hub / github.com/baidu/tera / OutputUInt64AsString

Function OutputUInt64AsString

src/common/base/string_number.cc:483–517  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

481
482template <typename OutputIterator>
483OutputIterator OutputUInt64AsString(uint64_t u64, OutputIterator output) {
484 int digits;
485 const char* ASCII_digits = NULL;
486
487 uint32_t u = static_cast<uint32_t>(u64);
488 if (u == u64) return OutputUInt32AsString(u, output);
489
490 uint64_t top_11_digits = u64 / 1000000000;
491 output = OutputUInt64AsString(top_11_digits, output);
492 u = static_cast<uint32_t>(u64 - (top_11_digits * 1000000000));
493
494 digits = u / 10000000; // 10,000,000
495 ASCII_digits = two_ASCII_digits[digits];
496 *output++ = ASCII_digits[0];
497 *output++ = ASCII_digits[1];
498 u -= digits * 10000000; // 10,000,000
499 digits = u / 100000; // 100,000
500 ASCII_digits = two_ASCII_digits[digits];
501 *output++ = ASCII_digits[0];
502 *output++ = ASCII_digits[1];
503 u -= digits * 100000; // 100,000
504 digits = u / 1000; // 1,000
505 ASCII_digits = two_ASCII_digits[digits];
506 *output++ = ASCII_digits[0];
507 *output++ = ASCII_digits[1];
508 u -= digits * 1000; // 1,000
509 digits = u / 10;
510 ASCII_digits = two_ASCII_digits[digits];
511 *output++ = ASCII_digits[0];
512 *output++ = ASCII_digits[1];
513 u -= digits * 10;
514 digits = u;
515 *output++ = '0' + digits;
516 return output;
517}
518
519template <typename OutputIterator>
520OutputIterator OutputInt64AsString(int64_t i, OutputIterator output) {

Callers 4

OutputInt64AsStringFunction · 0.85
OutputIntegerAsStringFunction · 0.85
WriteUInt64ToBufferFunction · 0.85
UInt64ToStringFunction · 0.85

Calls 1

OutputUInt32AsStringFunction · 0.85

Tested by

no test coverage detected