Avatar ·

كيفية تحويل مصفوفة بايت إلى سلسلة سداسية عشرية والعكس في C#؟

مرحباً بالجميع! أنا مطور C# مبتدئ، وقد واجهت مشكلة عند العمل مع البيانات الثنائية. أحتاج إلى حفظ مصفوفة بايت (مثل تجزئة SHA256) في ملف نصي، ثم قراءتها مرة أخرى. أدركت أنه لا يمكنني كتابة البايتات كما هي — ينتج نص مشوه. أحتاج إلى تحويلها إلى سلسلة من الرموز السداسية العشرية، ثم عند القراءة تحويل هذه السلسلة مرة أخرى إلى مصفوفة بايت.

حاولت فعل ذلك بنفسي، لكن الكود الخاص بي لا يعمل بشكل صحيح. إليك ما كتبته:

byte[] data = { 0x0F, 0xBA, 0x01, 0xFF };
string hex = "";
foreach (byte b in data)
{
    hex += b.ToString("X");
}
// النتيجة "FBA1FF" — بدون الأصفار البادئة!
Console.WriteLine(hex);

عندما أحاول قراءة هذه السلسلة مرة أخرى، لا أستطيع معرفة أين ينتهي البايت الواحد وأين يبدأ الآخر. على سبيل المثال، السلسلة "FBA1FF" يمكن تفسيرها بطرق مختلفة: {0xFB, 0xA1, 0xFF} أو {0x0F, 0xBA, 0x1F, 0xF} — وهذا غير صحيح.

سمعت عن BitConverter.ToString و StringBuilder، لكني لست متأكداً من الطريقة الصحيحة. هل يمكن لأحد أن يشرح لي الطريقة الصحيحة لتحويل مصفوفة بايت إلى سلسلة سداسية عشرية والعكس؟