یک اسکریپت PHP بنویسید که یک عدد بایت (مثلاً 1536000) را دریافت کرده و با استفاده از تابع log2 مقدار را به واحد مناسب باینری (B، KB، MB، GB، ...) تبدیل و نمایش دهد.
16.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:38 0.0
برای حل، از log2 برای پیدا کردن نمای باینری استفاده کنید؛ به این صورت که index = floor(log2(bytes) / 10) (چون 1 KB = 2^10) سپس مقدار نهایی = bytes / pow(1024, index) و واحد را از آرایهای مانند ['B','KB','MB','GB','TB'] انتخاب کنید. نکات: ورودی صفر یا منفی را کنترل کنید، نتیجه را با number_format یا round قالببندی کنید، و اگر تابع log2 در محیط شما در دسترس نیست میتوانید از log($bytes, 2) استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
در پیادهسازی این تبدیل ببینید که مقدار صفر یا منفی را پیشاز محاسبه جداگانه مدیریت کنید تا از آرایه واحدها یا تقسیم بر صفر جلوگیری شود، و اندیس محاسبهشده با تعداد واحدها (مثلاً تا TB یا بیشتر) clamp شود. اگر تابع log2 در محیط شما موجود نیست از log($bytes, 2) یا log($bytes)/log(2) استفاده کنید و مقدار بایت را به float تبدیل کنید تا برای اعداد بسیار بزرگ دقت حفظ شود. خروجی را با number_format یا round قالببندی کنید و در صورت نیاز locale را برای جداکننده هزارگان تنظیم نمایید. همچنین دقت کنید که برای مقادیر نزدیک به مرز واحدها (مثلاً 1023.9 B) تصمیمگیری درباره گرد یا تبدیل به واحد بالاتر را سازگار نگه دارید.
گزارش