Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

c# da 32bit parçalamak

Başlatan görkem, 25 Ocak 2016, 16:56:05

görkem

32bit integer değişkeni 4 adet  byte a nasıl parçalayabilirim.

1n4001

UInt32 degisken;

byte d0, d1, d2, d3;

d3 = (byte)(degisken >> 24);
d2 = (byte)(degisken >> 16);
d1 = (byte)(degisken >> 8);
d0 = (byte)(degisken);

vitruvius

#2
Merhaba,

Aradığınız sınıf BitConverter sınıfı. Method ise BitConverter.GetBytes.

BitConverter methodu bilgisayarınızın mimarisi nasılsa öyle çalışır. Big-endian'sa big-endian, little-endian'sa little-endian.

Little-Endian mi big-endian mi formatında istediğinizi belirtmemişsiniz. İkisini de gösterdim. Üstüne en son satırda bilgisayarınızın mimarisinin hangisi olduğunu test etmeyi de gösterdim. Hangisi lazımsa onu kullanırsınız.

static void Main(string[] args)
        {
            uint temp = 0xAAFF5522;

            byte[] myByteLittleEndian = BitConverter.GetBytes(temp);
            byte[] myByteBigEndian = BitConverter.GetBytes(temp);
            //  Benim bilgisayarimin little-endian mimaride oldugunu bildigim icin sayiyi little-endian'dan
            //  big-endian'a donusturuyorum.
            Array.Reverse(myByteBigEndian);

            Console.WriteLine("Number: 0x{0:X}", temp);
            Console.WriteLine("Little-Endian: {0}", BitConverter.ToString(myByteLittleEndian));
            Console.WriteLine("Big-Endian: {0}", BitConverter.ToString(myByteBigEndian));
            
            // Bilgisayarinizin mimarisini BitConverter.IsLittleEndian ile test edebilirsiniz.
            Console.WriteLine("Computer architecture: {0}", BitConverter.IsLittleEndian ? "Little-Endian" : " Big-Endian");
        }


Bu kodun çıktısı aşağıdaki gibi olur:

Alıntı YapNumber: 0xAAFF5522
Little-Endian: 22-55-FF-AA
Big-Endian: AA-FF-55-22
Computer architecture: Little-Endian

Kolay gelsin.

görkem

kusura bakmayın geç cevap verebildim yardımlarınız için teşekkürler akşam bakıcam.c# a o kadar hakim olmadığım için little-endian mı yoksa big-endian mı olduğunu bilmiyordum, böyle bir şeyin  olduğunu bile bilmiyordum açıkçası teşekkürler.

Murat Mert

S.A
Böyle bir deneme yapmıştım.
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;


..........................
.............................
...........................

private void button3_Click(object sender, EventArgs e)
        {
            uint value = Convert.ToUInt32(textBox29.Text);
           // int value = Convert.ToInt32(textBox29.Text);
            byte[] array = BitConverter.GetBytes(value);
            textBox25.Text = array[0].ToString();
            textBox26.Text = array[1].ToString();
            textBox27.Text = array[2].ToString();
            textBox28.Text = array[3].ToString();
        }
mert07

görkem

A.S @Murat Mert verdiğiniz örnek şeklinde kullandım sıkıntı yok.yardımlarınız için teşekkürler.

Murat Mert

mert07