在 C# 中反转字节数组的最快方法是什么?
What is the fastest way to reverse a byte array in c#?
我正在做一个需要非常快的项目,所以我问这个问题:
在 C# 中反转字节数组的最快方法是什么? (包括不安全代码)
In-place?大概是这样的:
byte[] Reverse( byte[] b )
{
for ( int i = 0 , int j = b.Length-1 ; i < j ; ++i, --j )
{
arr[i] ^= arr[j] ;
arr[j] ^= arr[i] ;
arr[i] ^= arr[j] ;
}
return b;
}
幂等的,你分配一个新的数组来包含反转的八位字节,可能是这样的:
byte[] Reverse( byte[] b )
{
byte[] r = new byte[b.Length];
for ( int i = 0, int j = b.Length ; i < b.Length ; )
{
r[i++] = b[--j];
}
return r;
}
我正在做一个需要非常快的项目,所以我问这个问题: 在 C# 中反转字节数组的最快方法是什么? (包括不安全代码)
In-place?大概是这样的:
byte[] Reverse( byte[] b )
{
for ( int i = 0 , int j = b.Length-1 ; i < j ; ++i, --j )
{
arr[i] ^= arr[j] ;
arr[j] ^= arr[i] ;
arr[i] ^= arr[j] ;
}
return b;
}
幂等的,你分配一个新的数组来包含反转的八位字节,可能是这样的:
byte[] Reverse( byte[] b )
{
byte[] r = new byte[b.Length];
for ( int i = 0, int j = b.Length ; i < b.Length ; )
{
r[i++] = b[--j];
}
return r;
}