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

نام تاپیک: تبدیل عدد دیسمال به باینری سه بایته

  1. #1

    Thumbs up تبدیل عدد دیسمال به باینری سه بایته

    سلام
    مشکل من این است که وقتی عدد را به مبدل خودم میدم میتونم 2بایتی و4 بایتی بدست بیارم اما 3 بایته نه
    کد من


    public byte[] FromNumberToByte(int num,int bytes)
    {
    if (bytes == 2)
    return BitConverter.GetBytes(Convert.ToInt16(num));
    if (bytes == 4)
    return BitConverter.GetBytes(Convert.ToInt32(num));
    return BitConverter.GetBytes(num);
    }


  2. #2

    نقل قول: تبدیل عدد دیسمال به باینری سه بایته

    نقل قول نوشته شده توسط abasfar مشاهده تاپیک
    سلام مشکل من این است که وقتی عدد را به مبدل خودم میدم میتونم 2بایتی و4 بایتی بدست بیارم اما 3 بایته نه
    سلام.
    کاملا طبیعی هستش، تابع GetBytes بر اساس Data Type ورودی خودش، به شما یک آرایه به طول 2، 4 یا 8 ممکنه برگردونده (به ترتیب برای int32، int16 و int64).
    میشه بفرمایید هدفتون از این کار چیه؟ اگر اصل مساله رو توضیح بدید شاید راه حل مناسبتری بهتون ارائه کنم.

    موفق باشید.

  3. #3

    نقل قول: تبدیل عدد دیسمال به باینری سه بایته

    ممنون از جواب شما
    من میخوام رایت عکس مانند bmp ودر هر پیکسل rgb سه بایته که من میخوام عدد را به صورت دهی بدم وتابع به 3بایت تبدیل کنه وبایت را تحویل بده

  4. #4

    نقل قول: تبدیل عدد دیسمال به باینری سه بایته

    نقل قول نوشته شده توسط abasfar مشاهده تاپیک
    ممنون از جواب شما من میخوام رایت عکس مانند bmp ودر هر پیکسل rgb سه بایته که من میخوام عدد را به صورت دهی بدم وتابع به 3بایت تبدیل کنه وبایت را تحویل بده
    سلام.
    برای اینکار می تونید از Color.FromArgb استفاده کنید.
    Integer مورد نظر رو بهش بدید، و RGB رو در Property های مختلف ازش دریافت کنید.

    موفق باشید.

  5. #5

    نقل قول: تبدیل عدد دیسمال به باینری سه بایته

    ممنون از جواب شما
    اما ببینید من میخوام بگم مثلا نقطه 25و25 قرمز باشه خوب من دیگه نمیخوام بنویسم مثلا ارایه اولی Color.FromArgb(X).R
    بعد ارایه بعدی Color.FromArgb(X).G
    ,وبعدی Color.FromArgb(X).B
    من یکجا خودش مقدار بگیره و سه بایت را مقدار بده
    وراستی فکر کنم این تابع با فرمت ما کمی متفاوت است
    rgb
    255.255.255
    ما با این فرمت در نظر میگیریم اما اون برای هرکدام ازرنگها یک شماره در نظر میگیره

  6. #6

    نقل قول: تبدیل عدد دیسمال به باینری سه بایته

    نقل قول نوشته شده توسط abasfar مشاهده تاپیک
    ممنون از جواب شما
    اما ببینید من میخوام بگم مثلا نقطه 25و25 قرمز باشه خوب من دیگه نمیخوام بنویسم مثلا ارایه اولی Color.FromArgb(X).R
    بعد ارایه بعدی Color.FromArgb(X).G
    ,وبعدی Color.FromArgb(X).B
    من یکجا خودش مقدار بگیره و سه بایت را مقدار بده
    وراستی فکر کنم این تابع با فرمت ما کمی متفاوت است
    rgb
    255.255.255
    ما با این فرمت در نظر میگیریم اما اون برای هرکدام ازرنگها یک شماره در نظر میگیره
    سلام.
    اگر چه با همون Color.FromArgb میتونید به هدفتون برسید، (همینطور با Shift دادن اعداد و ...)
    اما خوب، یه روش دیگه استفاده از چیزی شبیه union ها در C++‎ هستش. ابتدا در برنامه خودتون،
    یک Structure بدین شکل تعریف کنید:

    [StructLayout(LayoutKind.Explicit)]
    struct RGB
    {
    [FieldOffset(0)]
    public byte R;

    [FieldOffset(1)]
    public byte G;

    [FieldOffset(2)]
    public byte B;

    [FieldOffset(0)]
    public int value;
    };


    حالا برای استفاده، می تونیم به این شکل عمل کنیم:

    RGB color = new RGB();
    color.value = 6604840;
    اینجا، من از روی Integer ام (که 6604840 باشه)، value ی structure ام رو set میکنم. حالا خط بعدی، اگر بنویسید color.R مقدار 40، color.G مقدار 200 و color.B مقدار 100 رو میگیرید... (همون سه بایتی که دنبالش بودید). یا برعکس، اگر اون سه بایت رو داشته باشید، می تونید بدین شکل به اون Integer برسید:


    RGB color = new RGB();
    color.R = 40;
    color.G = 200;
    color.B = 100;
    خط بعد اگر color.value رو ببینید، مقدار 6604840 هستش... یعنی به سادگی با تعیین Layout هر فیلد، می تونید مشکلتون رو رفع کنید.

    موفق باشید.

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

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