نمایش نتایج 1 تا 8 از 8

نام تاپیک: مشکل در تبدیل قسمتی از آرایه ای از byte به int

  1. #1

    Question مشکل در تبدیل قسمتی از آرایه ای از byte به int

    با سلام
    من یک برنامه کوچیک نوشتن جهت تبدیل []byte به float .یک تابع که خودم نوشتم و یک تابه که مال خود #C هستش.
    مسئله اینجاست وقتی از اول آرایه تبدیل میکنم درسته هر دوتا ولی وقتی از وسط برمیدارم فقط تابع خودم کار میکنه.و تابع خود #C خطا میده.از اونجا که تابع خودم unsafe هستش نمیخام استفاده کنم.

    static void Main(string[] args)        {


    byte[] d = new byte[24];


    d[0] = 0xF0;
    d[1] = 0x49;
    d[2] = 0x02;
    d[3] = 0x00; //150000






    d[4] = 0xE3;
    d[5] = 0x07;//2019






    byte[] r = new byte[2];


    r[0] = d[4];
    r[1] = d[5];



    var f1 = BitConverter.ToSingle(r, 0);


    float f2 = ToFloat(r, 0);


    Console.WriteLine(f1);
    Console.WriteLine(f2);
    Console.ReadKey();


    }


    public static unsafe int ToFloat(byte[] data, int startIndex)
    {
    int result = 0;
    fixed (byte* ptr = &data[startIndex])
    {
    result = *((int*)ptr);
    }
    return result;
    }

  2. #2

    نقل قول: مشکل در تبدیل bety[] به float

    نقل قول نوشته شده توسط mandagarana مشاهده تاپیک
    با سلام
    من یک برنامه کوچیک نوشتن جهت تبدیل []byte به float .یک تابع که خودم نوشتم و یک تابه که مال خود #C هستش.
    مسئله اینجاست وقتی از اول آرایه تبدیل میکنم درسته هر دوتا ولی وقتی از وسط برمیدارم فقط تابع خودم کار میکنه.و تابع خود #C خطا میده.از اونجا که تابع خودم unsafe هستش نمیخام استفاده کنم.

    static void Main(string[] args)        {


    byte[] d = new byte[24];


    d[0] = 0xF0;
    d[1] = 0x49;
    d[2] = 0x02;
    d[3] = 0x00; //150000






    d[4] = 0xE3;
    d[5] = 0x07;//2019






    byte[] r = new byte[2];


    r[0] = d[4];
    r[1] = d[5];



    var f1 = BitConverter.ToSingle(r, 0);


    float f2 = ToFloat(r, 0);


    Console.WriteLine(f1);
    Console.WriteLine(f2);
    Console.ReadKey();


    }


    public static unsafe int ToFloat(byte[] data, int startIndex)
    {
    int result = 0;
    fixed (byte* ptr = &data[startIndex])
    {
    result = *((int*)ptr);
    }
    return result;
    }
    پیغام خطا را هم قرار بدید؟
    ونکته دیگه اینکه تابع ToFloat شما که یک int برمیگردونه نه یک float ؟؟ اونم فقط یک بایت با یک شماره اندیس مشخص را به int تبدیل میکنه نه کل آرایه !!!
    و در ضمن به ارزش بیت ها هم توجه کنید فقط چهار بایت کم ارزشش تبدیل به float خواهد شد.
    به این نکته هم ظاهرا توجه نکردید...
    Returns a single-precision floating point number converted from four bytes at a specified position in a byte array.
    آخرین ویرایش به وسیله farhad_shiri_ex : چهارشنبه 04 اردیبهشت 1398 در 19:16 عصر

  3. #3

    نقل قول: مشکل در تبدیل bety[] به float

    با سلام
    حق با شما بود من تغییرش دادم به int32 ولی باز خطا میده.
      byte[] d = new byte[6];

    d[0] = 0xF0;
    d[1] = 0x49;
    d[2] = 0x02;
    d[3] = 0x00; //150000

    d[4] = 0xE3;
    d[5] = 0x07;//2019

    byte[] r = new byte[2];


    r[0] = d[4];
    r[1] = d[5];


    var f1 = BitConverter.ToInt32(r, 0);


    int f2 = ToFloat(r, 0);

    Console.WriteLine(f1);
    Console.WriteLine(f2);
    Console.ReadKey();


    }


    public static unsafe int ToFloat(byte[] data, int startIndex)
    {
    int result = 0;
    fixed (byte* ptr = &data[startIndex])
    {
    result = *((int*)ptr);
    }
    return result;
    }




    Untitled.png

  4. #4

    نقل قول: مشکل در تبدیل bety[] به float

    نقل قول نوشته شده توسط mandagarana مشاهده تاپیک
    در مورد خطا، int یک متغیر چهار بایتی هست و طول آرایه میبایست حداقل 4 باشد.


    ولی هنوز معلوم نیست سوالتون مربوط به float هست یا int !!

  5. #5

    نقل قول: مشکل در تبدیل bety[] به float

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    در مورد خطا، int یک متغیر چهار بایتی هست و طول آرایه میبایست حداقل 4 باشد.


    ولی هنوز معلوم نیست سوالتون مربوط به float هست یا int !!

    من یه پست دارم که ارایه هستش و مثلا خانه 5و 6 نماینگر یک عدد است(مثلا سال)

     بایت 5 تا 6: یک عدد دو بایتی که مقدار "سال"

    بایت 7: یک عدد یک بایتی که مقدار "ماه" به میلادی

    خب من باید جدا کنم بعدش سال و ماه رو بدست بیارم
    چطوری؟

  6. #6

    نقل قول: مشکل در تبدیل bety[] به float

    نقل قول نوشته شده توسط mandagarana مشاهده تاپیک
    من یه پست دارم که ارایه هستش و مثلا خانه 5و 6 نماینگر یک عدد است(مثلا سال)

     بایت 5 تا 6: یک عدد دو بایتی که مقدار "سال"

    بایت 7: یک عدد یک بایتی که مقدار "ماه" به میلادی

    خب من باید جدا کنم بعدش سال و ماه رو بدست بیارم
    چطوری؟
    اینچنین توضیحاتی باید در پست اول همراه سوال مطرح بشن!


    به هر حال؛ مطابق نیازتون از تبدیل مناسب استفاده کنید
                byte[] d = new byte[24];
    d[0] = 0xF0;
    d[1] = 0x49;
    d[2] = 0x02;
    d[3] = 0x00; //150000
    //d[4]....
    d[5] = 0xE3;
    d[6] = 0x07; //2019 year
    d[7] = 0x03; // 3 month

    int n1 = BitConverter.ToInt32(d, 0);
    short year = BitConverter.ToInt16(d, 5);
    int month = d[7];

  7. #7

    نقل قول: مشکل در تبدیل bety[] به float

    ممنون مشکل توی نوع rader بود.
    آخرین ویرایش به وسیله mandagarana : یک شنبه 15 اردیبهشت 1398 در 17:10 عصر

  8. #8

    نقل قول: مشکل در تبدیل قسمتی از byte[] به int

    به صورت زیر دریافت کنید ببینید درست دریافت میشه یا نه
               System.IO.Stream str;
    Int32 strLen, strRead;
    // Create a Stream object.
    str = Request.InputStream;
    // Find number of bytes in stream.
    strLen = Convert.ToInt32(str.Length);
    // Create a byte array.
    byte[] strArr = new byte[strLen];
    // Read stream into byte array.
    strRead = str.Read(strArr, 0, strLen);

تاپیک های مشابه

  1. تبدیل کلاس به byte[]
    نوشته شده توسط m.h.movahedi در بخش C#‎‎
    پاسخ: 3
    آخرین پست: سه شنبه 18 اسفند 1394, 11:23 صبح
  2. سوال: خطا در تبدیل عکس به byte و وراد کردن آن در بانک اطلاعاتی
    نوشته شده توسط amin_sltny در بخش C#‎‎
    پاسخ: 0
    آخرین پست: یک شنبه 21 اسفند 1390, 12:24 عصر
  3. سوال: تبدیل آرایه به byte[] و بر عکس
    نوشته شده توسط mehdi_csharp در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 28 دی 1389, 08:47 صبح
  4. تبدیل از Hex به Byte
    نوشته شده توسط saeed_rezaei در بخش VB.NET
    پاسخ: 6
    آخرین پست: پنج شنبه 23 اسفند 1386, 16:53 عصر
  5. خواندن BYTE به BYTE
    نوشته شده توسط ICEMAN در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 3
    آخرین پست: پنج شنبه 25 بهمن 1386, 12:01 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •