反向字节数组小端 [英] Reverse byte array little endian

查看:74
本文介绍了反向字节数组小端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,pelase帮助我,我有一个字节数组b = new byte [4] {0,0,0,55}



i想要输出这个使用00 37 00 00


$ b $双向试图<预郎= CS> <跨度类= 代码关键字>如果(BitConverter.IsLittleEndian)
{b = Array.Reverse(b); }







 Array.Reverse(bytes) , 0 ,bytes.Length); 

// 显示
BitConverter.ToString(b) ;





输出为00 00 00 37或37 00 00 00



由于

解决方案
您需要在32位数据的内容看作两套16位基准的。



这样的东西可能对你有用;



 使用系统; 

命名空间 BitStuff {
class 计划{

静态 void 交换( ref byte a, ref byte b) {
var temp = a;
a = b;
b = temp;
}

静态 byte [] FlipInt16( byte [] rawData){
for var i = 0 ; i < rawData.Length; i + = 2 // 第2步为2x8位= 16
交换( ref rawData [i], ref rawData [i + 1 ]);
return rawData;
}

静态 byte [] FlipInt32( byte [] rawData){
for var i = 0 ; i < rawData.Length; i + = 4 ){ // 第4步为4x8位= 32
交换( ref rawData [i + 0 ], ref rawData [i + 2 ]);
交换( ref rawData [i + 1 ], ref rawData [i + 3 ]);
}
return rawData;
}

静态 void Main( string [] args){
var b = new byte [] { 0 0 0 55 };
Console.WriteLine(<跨度类= 代码串> <跨度类= 代码串 >原件:{0},BitConverter.ToString(b)中);
if (BitConverter.IsLittleEndian){
FlipInt32(b);
}
Console.WriteLine( 调整后:{0},BitConverter的ToString(b));
}
}
}







希望这有帮助,

Fredrik


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

if(BitConverter.IsLittleEndian)
    { b= Array.Reverse(b); }



and

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

解决方案

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

Something like this might work for you;

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);
            }
            Console.WriteLine("Adjusted: {0}", BitConverter.ToString(b));
        }
    }
}




Hope this helps,
Fredrik


这篇关于反向字节数组小端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆