مشكلة مع مجموعة بايت


أعمل حاليًا على مشروع يحتوي على مصفوفة بايت لتخزين البيانات الصوتية (pcm). عندما أقوم بتغيير المصفوفة تبقى المصفوفة دون تغيير.

الكود المستخدم.
بايت خاص[] import android.rawAudio;

عندما أستخدم دالة داخل الفصل لعكس المصفوفة، تظل المصفوفة دون تغيير.

الكود المستخدم لتغيير مصفوفة RawAudio

ج #
Public void Reverse()
{
    int i = 0;
    int j = rawAudio.Lenght - 1;
    While(i < j)
    {
         byte temp = rawAudio[i];
         rawAudio[i] = rawAudio[j];
         rawAudio[j] = temp;
         i++;
         j--;
    }
}

يبدو أن أي معالجة على المصفوفة تترك المصفوفة دون تغيير. ماذا يمكن أن يكون السبب وراء عدم تغيير المصفوفة على الرغم من أنني في الواقع أقوم بتغيير المصفوفة.

ما حاولت:

لقد حاولت تغيير المصفوفة وكذلك استخدام Array Reverse مع نفس مشكلة عدم تحديث المصفوفة.

الحل 1

لماذا تعيد اختراع العجلة؟

توجد بالفعل طريقة قادرة على عكس المصفوفة.

يمكن العثور على الوثائق بالإضافة إلى المثال هنا:
Array.Reverse الطريقة (النظام) | مايكروسوفت تعلم[^]

الحل 2

لديك خطأ مطبعي في التعليمات البرمجية الخاصة بك مما يؤدي إلى عدم حدوث أي شيء لأنك لا تقوم بالتحقق من الأخطاء في التعليمات البرمجية الخاصة بك وعلى الأرجح لم تستخدم مصحح الأخطاء –

ج #
int j = rawAudio.Lenght - 1; //error here

“الطول يجب أن يكون”الطول”

للتعامل مع الأخطاء، يجب أن تبدو التعليمات البرمجية الخاصة بك كما يلي –

ج #
public void Reverse()
{
    if (rawAudio == null)
    {
        //Handle the case if rawAudio is null...
        Console.WriteLine("Error: My rawAudio array is null.");
        return;
    }

    int length = rawAudio.Length;

    if (length == 0)
    {
        //Handle the case if your rawAudio is an empty array...
        Console.WriteLine("Error: My rawAudio array is empty.");
        return;
    }

    int i = 0;
    int j = length - 1;

    while (i < j)
    {
        byte temp = rawAudio[i];
        rawAudio[i] = rawAudio[j];
        rawAudio[j] = temp;
        i++;
        j--;
    }
}

コメント

タイトルとURLをコピーしました