حاسبة مصفوفة بايتات إلى عدد صحيح
البايتات 0 و1 و2 و3 تعطي عند قراءتها big-endian العدد 66051، أي 0x00010203 بالست عشري، وتعطي عند قراءتها little-endian العدد 50462976. أدخل من بايت إلى ثمانية بايتات واختر الترتيب لتحصل على العدد الصحيح الدقيق. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- البايتات
- 0, 1, 2, 3
- ترتيب البايتات
- Big
- عدد البايتات
- 4
- عرض البتات
- 32
- عشري
- 66051
- Hex
- 0x00010203
تخزّن البروتوكولات الثنائية وصيغ الملفات وحزم الشبكة الأعداد الصحيحة متعددة البايتات كمتتاليات مرتبة من البايتات. وتعني البايتات الأربع ذاتها أرقامًا مختلفة تمامًا عند تفسير big-endian مقابل little-endian، لذلك يحتاج المهندسون والطلاب إلى طريقة حتمية لتحويل مصفوفة بايتات إلى عدد صحيح واحد دون تخمين ترتيب الإزاحة. تقبل حاسبة مصفوفة البايتات إلى عدد صحيح هذه من واحد إلى ثمانية قيم بايت غير موقّعة (كل منها بين 0 و255) واختيارًا للـ endianness، ثم تُرجع العدد الصحيح غير الموقّع المدمج كسلسلة عشرية دقيقة، ورقم JavaScript آمن عندما يتسع، وصيغة hex مبطّنة بالأصفار مع البادئة 0x. استخدمها لفك ترميز بادئات الطول والأرقام السحرية وعدادات التسلسل والحقول متعددة البايتات من تفريغات hex أو التقاطات الحزم.
كيف يحوّل ترتيب البايتات المصفوفة إلى عدد صحيح واحد
العدد الصحيح غير الموقّع متعدد البايتات ليس سوى عدد موضعي بالأساس 256. مع n بايتات B0, B1, …, Bn−1 كلٌّ منها في المدى 0–255، يعامل ترتيب big-endian البايت B0 بوصفه الأعلى أهمية: القيمة هي B0×256^(n−1) + B1×256^(n−2) + … + Bn−1×256^0. يعكس ترتيب little-endian الأهمية بحيث يكون أول عنصر في المصفوفة هو البايت الأدنى أهمية: القيمة هي B0×256^0 + B1×256^1 + … + Bn−1×256^(n−1).
تفسّر هاتان الصيغتان لماذا تصبح المصفوفة نفسها [0x01, 0x02, 0x03, 0x04] هي 0x01020304 (16909060 عشريًا) في وضع big-endian و0x04030201 (67305985 عشريًا) في وضع little-endian. تستخدم بروتوكولات الشبكة مثل TCP/IP ومعظم صيغ السلك والعديد من ترويسات الملفات ترتيب big-endian (ترتيب بايتات الشبكة). تعتمد تخطيطات ذاكرة أجهزة x86 وx86-64 وحقول Windows PE وكثير من منظومة little-endian تخزين LSB أولًا.
لا تخمّن هذه القدرة منصّتكم: يجب عليكم التصريح بالـ endianness صراحةً حتى يُحوَّل تفريغ hex من التقاط شبكة وتفريغ من ذاكرة عملية Intel كلاهما بشكل صحيح. تجمع التنفيذ العدد الصحيح بإزاحات BigInt دقيقة بثمانية بتات لكل بايت، فتبقى النتائج دقيقة بتًا بتًا لكل عرض من بايت واحد إلى ثمانية دون تقريب عائم.
أين تثبت أداة البايتات إلى عدد صحيح قيمتها
الهندسة العكسية للبروتوكولات وتحديات CTF الثنائية والبرمجيات الثابتة المدمجة تتطلب باستمرار تحويل مقاطع بايت قصيرة من تفريغات hex إلى أعداد صحيحة مقروءة للأطوال والإزاحات والطوابع الزمنية والمعرّفات. يحتاج المعلّمون الذين يشرحون الـ endianness إلى مرجع حي يقلب فقط علم ترتيب البايتات مع الإبقاء على المصفوفة ثابتة، ليرى الطلاب لماذا يختلف ترتيب الشبكة عن ترتيب المضيف على نفس تفريغ الذاكرة. تستفيد نصوص التكامل المستمر التي تحلّل ترويسات ثنائية ثابتة في Node أو عمّال الحافة من دالة خالصة صغيرة بدل سحب مكتبة كاملة لتحليل ثنائي من أجل حقل متعدد البايتات واحد.
التحقق الفاشل لا يستهلك الرصيد. أبقوا الطلبات على ثمانية بايتات كحد أقصى (العرض الشائع لحقول uint64)، وثبّتوا decimal وhex في اختباراتكم، فتحصلون على فك ترميز أعداد صحيحة قابل للتكرار لمختبرات الحزم وجولات تفريغ hex والأتمتة دون بناء مساعد إزاحة وقناع في كل لغة تنشرونها.
حالات الاستخدام
فك ترميز حقول متعددة البايتات من تفريغات hex للحزم
الصقوا بايتات الطول أو المنفذ أو رقم التسلسل من التقاط، واختاروا big أو little endian، واقرأوا العدد الصحيح العشري الدقيق وhex المبطّن للحقل.
فحوصات CI لمحلّلات ترويسات ثنائية
تحقّقوا من أن فاك الحزم الخاص بلغتكم يطابق هذا المرجع الحتمي لحالات 1–8 بايتات big وlittle endian دون انحراف عائم.
الأسئلة الشائعة
ما الفرق بين big-endian وlittle-endian؟
يعامل big-endian أول عنصر في المصفوفة كالبايت الأعلى أهمية (ترتيب الشبكة). ويعامل little-endian الأول كالبايت الأدنى أهمية (شائع على مضيفات x86).
لماذا الحد الأقصى للطول ثمانية بايتات؟
ثمانية بايتات تغطي العروض غير الموقّعة حتى 64 بت (uint8–uint64)، بما يطابق معظم حقول البروتوكولات وصيغ الملفات. الأعداد الصحيحة متعددة الدقة الأوسع خارج نطاق هذه الحاسبة.
ما ترتيب البايتات الذي تستخدمه حزم الشبكة؟
تستخدم بروتوكولات الشبكة مثل TCP/IP ومعظم صيغ النقل وكثير من ترويسات الملفات ترتيب big-endian، ويسمى أيضًا ترتيب الشبكة. أما ذاكرة x86 وترويسات الملفات التنفيذية في Windows فتستخدم little-endian، فاختر الترتيب حسب مصدر بايتاتك.
لماذا تحتفظ النتيجة الست عشرية بالأصفار البادئة؟
لأنها تُكمَّل إلى خانتين ست عشريتين لكل بايت حتى يبقى العرض ظاهرًا: أربعة بايتات تعرض ثماني خانات، ولا يختفي بايت أول قيمته صفر. أما العدد العشري فيظهر دون أصفار بادئة.
كيف تتحول قائمة البايتات إلى عدد واحد؟
كل بايت خانة في نظام أساسه 256. في big-endian يكون البايت الأول هو الأعلى أهمية ويُضرب في أكبر قوة للعدد 256، وفي little-endian يكون الأول هو الأقل وزنًا. والنتيجة دقيقة حتى ثمانية بايتات.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/bytes-to-integer \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bytes":[0,1,2,3],"endianness":"big"}'const res = await fetch("https://api.kit.forhosting.com/dev/bytes-to-integer", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bytes": [
0,
1,
2,
3
],
"endianness": "big"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/bytes-to-integer",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bytes": [
0,
1,
2,
3
],
"endianness": "big"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/bytes-to-integer", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bytes":[0,1,2,3],"endianness":"big"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bytes":[0,1,2,3],"endianness":"big"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/bytes-to-integer", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"bytes": [
0,
1,
2,
3
],
"endianness": "big"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.bytes_to_integer",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تغذي المنطق الخالص ذاته أداة المتصفح المجانية ومسار API، فلا تختلف عروض القاعة ونصوص الأتمتة أبدًا حول ما إذا كان أول عنصر في المصفوفة هو البايت الأعلى أهمية.
كيف يحوّل ترتيب البايتات المصفوفة إلى عدد صحيح واحد
يظهر الحقل الاختياري decimal_number فقط عندما يتسع الناتج غير الموقّع ضمن مدى الأعداد الصحيحة الآمنة في JavaScript (حتى 2^53−1)؛ أما القيم الأوسع فتعيد السلسلة العشرية الدقيقة وhex حتى لا يفقد العملاء البتات منخفضة الرتبة.
عقد الإدخال وحقول الاستجابة وأخطاء التحقق
كما يفشل غياب endianness أو رمز غير معروف برسالة واضحة تسرد القيم المسموحة. البايتات نفسها مع little endianness تعطي decimal 50462976 وhex 0x03020100. أرسلوا جسم JSON بحقلين إلزاميين. bytes مصفوفة غير فارغة من عدد صحيح واحد إلى ثمانية من 0 إلى 255 (تُقبل أيضًا لكل عنصر سلاسل رقمية وhex ببادئة 0x وثنائي ببادئة 0b). يجب أن تكون endianness هي big أو little؛ وتشمل الأسماء البديلة المقبولة be وle وbig_endian وlittle_endian وmsb وlsb حتى تتوافق أغلفة SDK والنماذج البشرية مع المعالج نفسه. تفشل المصفوفات الفارغة وأكثر من ثمانية عناصر وغير الأعداد الصحيحة والقيم خارج 0–255 بـ invalid_input مع تسمية المشكلة، ولا تُفوتر تلك الإخفاقات. عند النجاح يعيد الجسم مصفوفة bytes المطبّعة والـ endianness القانونية (دائمًا big أو little) مع byte_count وbit_width (ثمانية أضعاف الطول) وdecimal كسلسلة أساس 10 بلا أصفار بادئة إلا للصفر نفسه وhex بأحرف كبيرة وبادئة 0x مبطّنة إلى رقمين لكل بايت إدخال حتى تبقى عروض حقول الحزمة مستقرة بصريًا. عندما يكون العدد الصحيح على الأكثر Number.MAX_SAFE_INTEGER يُدرج decimal_number كرقم JSON لراحة اللغات التي تفضّل الأنواع الرقمية؛ وللقيم غير الموقّعة الأكبر يُحذف الحقل بدل تعيينه null، وفق قاعدة الإطار بأن المخرجات الاختيارية تختفي بدل تلويث العملاء بـ null. مثال: bytes [0, 1, 2, 3] مع endianness big يعطي decimal 66051 وhex 0x00010203 وbit_width 32 وdecimal_number 66051.
أين تثبت أداة البايتات إلى عدد صحيح قيمتها
تكسب مواقع التوثيق التي تتنافس على «حاسبة مصفوفة بايتات إلى عدد صحيح» أو «محوّل endianness» مسار متصفح مجاني يطابق API المدفوع بايتًا ببايت على الوحدة نفسها، فلا تكذب أدوات التسويق عن سلوك الإنتاج. ولأن التنفيذ pure parse من المستوى A، تكلف كل مكالمة ناجحة السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة.
حالات التكامل
تعليم الـ endianness بمصفوفة بايتات ثابتة
أبقوا البايتات [0x12, 0x34, 0x56, 0x78] ثابتة، وبدّلوا الـ endianness، وأرِوا الطلاب كيف ينتج ترتيب الشبكة وترتيب المضيف little-endian أعدادًا صحيحة مختلفة.
أسئلة تقنية
كيف أحوّل مصفوفة بايتات إلى عدد صحيح؟
أرسلوا bytes كمصفوفة من 1–8 أعداد صحيحة من 0–255 وendianness كـ big أو little. تُرجع API القيمة غير الموقّعة المدمجة عشريًا (سلسلة) وhex (بادئة 0x، مبطّنة بالأصفار).
متى يُحذف decimal_number؟
عندما يتجاوز الناتج غير الموقّع مدى الأعداد الصحيحة الآمنة في JavaScript (2^53−1). السلسلة العشرية الدقيقة وhex حاضران دائمًا؛ الحقل الرقمي الاختياري يُحذف بدل null.
كم تكلفة حاسبة مصفوفة البايتات إلى عدد صحيح؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل مكالمة ناجحة؛ الإدخال غير الصالح لا يُفوتر.