كيفية تحويل char* عبر الأنظمة الأساسية إلى طويل طويل (64 بت)؟

StackOverflow https://stackoverflow.com/questions/7388410

سؤال

كيف يمكنني تحويل سلسلة char* إلى عدد صحيح طويل (64 بت)؟

أستخدم مترجمي MSVC وGC والمنصات الخاصة بي هي Windows وLinux وMAC OS.

شكرًا.

هل كانت مفيدة؟

المحلول

يستخدم strtoull لفترة طويلة غير موقعة أو strtoll للتوقيع لفترة طويلة.على أي نظام يونكس (Linux، Mac OS X)، اكتب man strtoull أو man strtoll للحصول على وصفه.نظرًا لأن كلاهما جزء من معيار C99، فيجب أن يكونا متاحين على أي نظام يدعم لغة C.صفحات رجل Linux أيضًا لديك أمثلة حول كيفية استخدامها.

نصائح أخرى

لـ C++ مع مترجم يدعم long long int, ، سأستخدم أ std::istringstream هدف.على سبيل المثال:

char* number_string;
//...code that initializes number_string

std::istringstream input_stream(number_string);
long long int i64_bit_type;
input_stream >> i64_bit_type;
Genacodicetagpre

ربما يكون الرمز الترميزي العام هو الأبسط (في الكود).راجع http://www.boost.org/doc/libs/1_47_0 / libs / conversion / lexical_cast.htm لمزيد من المعلومات.بدلاً من ذلك ، استخدم رمزًا عامًا لاستخراج القيمة الرقمية.

Genacodicetagpre
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top