كيفية تحويل char* عبر الأنظمة الأساسية إلى طويل طويل (64 بت)؟
-
29-10-2019 - |
سؤال
كيف يمكنني تحويل سلسلة 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;
ربما يكون الرمز الترميزي العام هو الأبسط (في الكود).راجع http://www.boost.org/doc/libs/1_47_0 / libs / conversion / lexical_cast.htm لمزيد من المعلومات.بدلاً من ذلك ، استخدم رمزًا عامًا لاستخراج القيمة الرقمية.