0
点赞
收藏
分享

微信扫一扫

调转大小端

前端王祖蓝 2022-01-20 阅读 31
c#
public enum DataFormat
{
    ABCD,
    BADC,
    CDAB,
    DCBA

}


    #region 自定义截取字节数组

    private byte[] GetByteArray(byte[] dest, int start, int length)
    {
        if (dest != null && dest.Length >= start + length)
        {
            byte[] result = new byte[length];
            Array.Copy(dest, start, result, 0, length);
            return result;
        }
        else
        {
            return null;
        }
    }


    #endregion



    #region 带数据格式的4个字节数组截取
    private byte[] Get32ByteArray(byte[] dest, int start, DataFormat dataFormat)
    {
        byte[] resultTemp = GetByteArray(dest, start, 4);
        byte[] result = new byte[4];

        if (resultTemp != null)
        {
            switch (dataFormat)
            {
                case DataFormat.ABCD:
                    result[0] = resultTemp[3];
                    result[1] = resultTemp[2];
                    result[2] = resultTemp[1];
                    result[3] = resultTemp[0];
                    break;
                case DataFormat.BADC:
                    result[0] = resultTemp[2];
                    result[1] = resultTemp[3];
                    result[2] = resultTemp[0];
                    result[3] = resultTemp[1];
                    break;
                case DataFormat.CDAB:
                    result[0] = resultTemp[1];
                    result[1] = resultTemp[0];
                    result[2] = resultTemp[3];
                    result[3] = resultTemp[2];
                    break;
                case DataFormat.DCBA:
                    result[0] = resultTemp[0];
                    result[1] = resultTemp[1];
                    result[2] = resultTemp[2];
                    result[3] = resultTemp[3];
                    break;
                default:
                    break;
            }
            return result;
        }
        else
        {
            return null;
        }
    }
    #endregion

    #region 带数据格式的2个字节数组截取
    private byte[] Get16ByteArray(byte[] dest, int start, DataFormat dataFormat)
    {
        byte[] resultTemp = GetByteArray(dest, start, 2);
        byte[] result = new byte[2];

        if (resultTemp != null)
        {
            switch (dataFormat)
            {
                case DataFormat.CDAB:
                case DataFormat.ABCD:
                    result[0] = resultTemp[1];
                    result[1] = resultTemp[0];
                    break;
                case DataFormat.DCBA:
                case DataFormat.BADC:
                    result[0] = resultTemp[0];
                    result[1] = resultTemp[1];
                    break;
                default:
                    break;
            }
            return result;
        }
        else
        {
            return null;
        }
    }
    #endregion
举报

相关推荐

0 条评论