15,122,218 members
2.00/5 (1 vote)
See more:
Hello , pelase help me , i have a byte array b=new byte[4]{0,0,0,55}

i want output this as 00 37 00 00

i tried using
C#
```if(BitConverter.IsLittleEndian)
{ b= Array.Reverse(b); }
```

and
C#
```Array.Reverse(bytes, 0, bytes.Length);

// to display
BitConverter.ToString(b);```

am getting output as 00 00 00 37 or 37 00 00 00

thanks
Posted
Thomas Daniels 5-Dec-14 8:58am

You talk about reversing the array, but the 55 becomes 37. Is that intentional?
Fredrik Bornander 5-Dec-14 9:02am

`BitConverter.ToString` will dump the values in hexadecimal format.
Thomas Daniels 5-Dec-14 9:06am

Oh, I see. I missed that it was hex format.

## Solution 1

You need to look at the content of the 32bit data as two sets of 16bit datums.

Something like this might work for you;

C#
```using System;

namespace BitStuff {
class Program {

static void Swap(ref byte a, ref byte b) {
var temp = a;
a = b;
b = temp;
}

static byte[] FlipInt16(byte[] rawData) {
for (var i = 0; i < rawData.Length; i += 2) // Step two for 2x8 bits=16
Swap(ref rawData[i], ref rawData[i + 1]);
return rawData;
}

static byte[] FlipInt32(byte[] rawData) {
for (var i = 0; i < rawData.Length; i += 4)  {// Step four for 4x8 bits=32
Swap(ref rawData[i + 0], ref rawData[i + 2]);
Swap(ref rawData[i + 1], ref rawData[i + 3]);
}
return rawData;
}

static void Main(string[] args) {
var b = new byte[] { 0, 0, 0, 55 };
Console.WriteLine("Original: {0}", BitConverter.ToString(b));
if (BitConverter.IsLittleEndian) {
FlipInt32(b);
}
}
}
}```

Hope this helps,
Fredrik
v2
GagKumar 5-Dec-14 9:09am

Hi thanks for response, i am looking output as 00 37 00 00, its good job
Fredrik Bornander 5-Dec-14 9:10am

Then flip the lower 16 bits with the upper 16 bits as well, the process is the same.
GagKumar 5-Dec-14 9:31am

sorry to ask you again Fredrik,

am getting point of you.
Fredrik Bornander 5-Dec-14 9:36am

I updated the answer with a flip for 32bit.
GagKumar 5-Dec-14 9:35am

go it ,thanks

public static byte[] ReverseBytes(byte[] outArray)
{
byte temp;
int hitr = outArray.Length - 1;

for (int ctr = 0; ctr < outArray.Length / 2; ctr++)
{
temp = outArray[ctr];
outArray[ctr] = inArray[hitr];
outArray[hitr] = temp;
hitr -= 1;
}
return outArray;
}