حاسبة تبديل ترتيب البايتات
يتحول 0x12345678 إلى 0x78563412 عند عكس بايتاته الأربعة، وهي الخطوة بين ترتيب الشبكة وذاكرة little-endian. اختر عرضًا من 8 أو 16 أو 32 أو 64 بتًا وشاهد القيمة قبل التبديل وبعده بالست عشري والعشري وبايتًا بايتًا. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- القيمة
- 0x12345678
- العرض
- 32
- عدد البايتات
- 4
- السداسي عشر قبل
- 0x12345678
- السداسي عشر بعد
- 0x78563412
- العشري قبل
- 305419896
تختلف مكدسات الشبكة وصيغ الملفات والبرمجيات المضمّنة باستمرار حول ما إذا كان البايت الأعلى أهمية في العدد الصحيح يأتي أولًا أم آخرًا. يظهر حقل الطول على السلك مثل 0x12345678 ويُخزَّن في ذاكرة little-endian على هيئة 0x78563412، والرحلة العكسية شائعة كذلك عندما تفرّغ سجلًا وتحتاج القيمة بترتيب الشبكة. تقبل حاسبة تبديل ترتيب البايتات عددًا صحيحًا وعرضًا قدره 8 أو 16 أو 32 أو 64 بتًا، وتعكس البايتات داخل ذلك الوعاء، ثم تُرجع القيمة الست عشرية قبل التبديل وبعده مع الصيغ العشرية ومصفوفات البايتات المطابقة.
ماذا يفعل تبديل ترتيب البايتات عند 8 و16 و32 و64 بتًا
العدد الصحيح غير الموقّع متعدد البايتات متتالية من البايتات تعتمد أهميتها على الـ endianness. بالكتابة الموضعية المعتادة يعني 0x12345678 أن البايت الأعلى أهمية هو 0x12 والأدنى أهمية هو 0x78. يخزّن big-endian تلك البايتات بذلك الترتيب نفسه؛ أما little-endian فيعكسها فتحمل الذاكرة 78 56 34 12.
تبديل ترتيب البايتات هو ذلك العكس تمامًا داخل وعاء ثابت العرض: تبديل 32 بتًا لـ 0x12345678 يعطي 0x78563412، وتبديل 16 بتًا لـ 0x1234 يعطي 0x3412، وقيمة 8 بتات لا تتغير لأن بايتًا واحدًا لا يملك ترتيبًا يُقلب. يسير تبديل 64 بتًا على ثمانية بايتات بالمنوال نفسه، ولذلك يصير 0x0123456789ABCDEF إلى 0xEFCDAB8967452301. يسمّي العتاد هذه التعليمات bswap؛ ومساعدات شبكة POSIX مثل htons وhtonl وntohs وntohl هي العكس ذاته عندما يكون ترتيب المضيف little-endian.
لا تخمّن هذه الحاسبة منصتك ولا تحتاج راية endian للاتجاه المصدر: تقدّم العدد كما يكتبه الناس (أو كسلسلة hex ببادئة 0x) مع عرض، والنتيجة هي العدد الذي بايتاته عكس ذلك العرض. تطبيق التبديل مرتين يعيد القيمة الأصلية، فيصير ذهابًا وإيابًا آمنًا للاختبارات التي تحوّل أعداد المضيف إلى ترتيب الشبكة ثم تعود.
أين تبرّر واجهة تبديل ترتيب البايتات كلفتها
تحتاج هندسة البروتوكولات العكسية وصناعة الحزم وتحديات CTF الثنائية باستمرار إلى bswap موثوق لمقارنة تفريغ hex من Wireshark وتفريغ سجل little-endian دون قلب البايتات يدويًا. تحوّل فرق الأنظمة المضمّنة والبرمجيات الثابتة ثوابت الإعداد وبذور CRC والأرقام السحرية بين ترتيب الشبكة وترتيب مضيف MCU عند كتابة الترويسات أو فحص صور الوميض. يحتاج من يشرح الـ endianness إلى وسيط حي يُبقي العدد ثابتًا ويعكس البايتات فقط عند عرض مختار، ليرى الطلاب لماذا htons على 0x1234 يساوي 0x3412 على مضيف little-endian.
تستفيد سكربتات التكامل المستمر التي تولّد متجهات اختبار للمسلسِلات من دالة خالصة صغيرة بدل سحب صندوق أدوات ثنائي كامل من أجل عدد واحد. لا يستهلك فشل التحقق الرصيد. أبقِ الطلبات صغيرة وثبّت سلاسل hex في الاختبارات لتحصل على تبديل endian قابل لإعادة الإنتاج للواجبات والمحللات وعُمّال الحافة.
حالات الاستخدام
ترتيب الشبكة وترتيب المضيف
حوّل عددًا صحيحًا من 16 أو 32 بتًا بين صيغة السلك big-endian وذاكرة المضيف little-endian كما تفعل htons وhtonl وntohs وntohl.
ثوابت البرمجيات الثابتة وتفريغات hex
اعكس بايتات الأرقام السحرية والأطوال وبذور CRC عندما يختلف تفريغ hex وحرفي عدد صحيح في C حول الـ endianness.
تعليم الـ endianness
اعرض الصيغتين الست عشريتين للعدد ذاته عند 8 أو 16 أو 32 أو 64 بتًا حتى يرى الطلاب أن التبديل مجرد عكس البايتات.
الأسئلة الشائعة
هل هذا مماثل لـ htons أو bswap؟
نعم. عند 16 بتًا يطابق htons/ntohs على مضيف little-endian؛ وعند 32 بتًا يطابق htonl/ntohl وbswap من 32 بتًا؛ وعند 64 بتًا يطابق bswap من 8 بايتات.
ماذا يحدث إن لم تتسع القيمة للعرض؟
لا تلف الحاسبة القيمة ولا تقطعها؛ اختر وعاءً أوسع أو أرسل قيمة تتسع.
هل تُسمح الأعداد السالبة؟
نعم. تُحوَّل القيمة السالبة إلى مكمّل ثنائي عند العرض المختار ثم تُعكس بايتات ذلك النمط غير الموقّع.
هل يجب أن أحدد هل قيمتي big-endian أم little-endian؟
لا. اكتب العدد الصحيح كما تكتبه عادة، بالعشري أو بالست عشري مع 0x، واختر العرض: النتيجة هي العدد نفسه بعد عكس بايتاته داخل ذلك العرض، دون أي افتراض عن جهازك.
هل يعيد التبديل مرتين القيمة الأصلية؟
نعم. عكس البايتات مرتين بالعرض نفسه يعيد القيمة الأولى تمامًا، ولهذا يفيد في اختبار التحويل ذهابًا وإيابًا بين ترتيب الجهاز وترتيب الشبكة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/byte-order-swap \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"0x12345678","width":32}'const res = await fetch("https://api.kit.forhosting.com/dev/byte-order-swap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "0x12345678",
"width": 32
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/byte-order-swap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "0x12345678",
"width": 32
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/byte-order-swap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"0x12345678","width":32}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"0x12345678","width":32}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/byte-order-swap", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"value": "0x12345678",
"width": 32
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.byte_order_swap",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تغذّي الدالة الخالصة ذاتها أداة المتصفح المجانية ومسار API، فلا تختلف فحوص الواجبات ومحللات الإنتاج أبدًا على عملية bswap. القيم التي لا تتسع للعرض المختار والحقول الناقصة والعروض غير الجائزة تفشل بـ invalid_input بدل الالتفاف الصامت.
عقد الإدخال وشكل الاستجابة وسلوك الأخطاء
يلزم أن يتسع العدد للعرض المختار: القيم غير السالبة لا تتجاوز اثنين مرفوعًا إلى العرض ناقص واحد، والقيم السالبة تُفسَّر كمكمّل ثنائي ويجب أن تقع في المدى الموقّع لذلك العرض. تُحذف الحقول العددية الاختيارية بدل ضبطها على null عندما لا تكون نتيجة 64 بتًا دقيقة. أرسل بـ POST جسم JSON بحقلين إلزاميين: value وهو العدد المراد تبديله، وwidth وهو عرض الوعاء بالبتات. يجوز أن يكون value رقم JSON أو سلسلة عشرية أو سلسلة ست عشرية ببادئة 0x أو اختياريًا سلسلة ثنائية 0b؛ وتُقبل الأسماء البديلة number وn وinteger وhex. يجب أن يكون width أحد 8 أو 16 أو 32 أو 64 (أسماء بديلة bits وbit_width وsize) وقد يصل رقمًا أو رمزًا قصيرًا مثل 32bit. الفيضان أو الحقل الناقص أو السلسلة الفارغة أو غير الصحيح أو عرض خارج المجموعة المغلقة يفشل بـ invalid_input مع تسمية الحقل؛ وتلك الإخفاقات لا تُفوتر. عند النجاح يتضمن الجسم width وbyte_count؛ وhex_before وhex_after كسلسلتي 0x بأحرف كبيرة مبطّنتين بالأصفار؛ وdecimal_before وdecimal_after كسلسلتين عشريتين دقيقتين حتى لا تفقد نتائج 64 بتًا أي رقم؛ وbytes_before وbytes_after كمصفوفتين MSB أولًا من 0–255؛ ومتى اتسعت كل مقدار لنطاق الأعداد الصحيحة الآمن في JavaScript يظهر decimal_before_number وdecimal_after_number. مثال: value 0x12345678 وwidth 32 يعطيان hex_before 0x12345678 وhex_after 0x78563412 والبايتات 18,52,86,120 معكوسة إلى 120,86,52,18.
أين تبرّر واجهة تبديل ترتيب البايتات كلفتها
تكسب مواقع المحتوى التي تتنافس على «حاسبة تبديل ترتيب البايتات» مسار متصفح مجاني يطابق API المدفوع بايتًا ببايت على الوحدة ذاتها. ولأن التنفيذ parse خالص من الفئة A، تكلف كل دعوة ناجحة السعر الأساسي المنشور $0.002 بلا رموز نموذج ولا شبكة صادرة.
أسئلة تقنية
كيف أبدّل ترتيب بايتات عدد صحيح؟
أرسل value (عشري أو hex 0x) وwidth (8 أو 16 أو 32 أو 64). تعكس API بايتات ذلك الوعاء وتُرجع hex_before وhex_after ومصفوفات العشري والبايتات المطابقة.
كم تبلغ كلفة حاسبة تبديل ترتيب البايتات؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل دعوة ناجحة؛ ولا تُفوتر المدخلات غير الصالحة.