How to convert a sbyte[] to byte[] in C#?

前端 未结 3 1437
情话喂你
情话喂你 2020-12-08 19:22

I\'ve got a function which fills an array of type sbyte[], and I need to pass this array to another function which accepts a parameter of type byte[].

Can I convert

3条回答
  •  忘掉有多难
    2020-12-08 20:09

    You will have to copy the data (only reference-type arrays are covariant) - but we can try to do it efficiently; Buffer.BlockCopy seems to work:

        sbyte[] signed = { -2, -1, 0, 1, 2 };
        byte[] unsigned = new byte[signed.Length];
        Buffer.BlockCopy(signed, 0, unsigned, 0, signed.Length);
    

    If it was a reference-type, you can just cast the reference without duplicating the array:

        Foo[] arr = { new Foo(), new Foo() };
        IFoo[] iarr = (IFoo[])arr;
        Console.WriteLine(ReferenceEquals(arr, iarr)); // true
    

提交回复
热议问题