将 int[] 数组转换为 ushort[] 数组

Convert int[] array to ushort[] array

我需要将 int[] 数组转换为 ushort[] 数组,以便使用这两种类型数组中的方法 Array.Copy()

我应该使用哪种方法?

var arr = Array.ConvertAll(inputs, val => checked((ushort)val));

这里Array.ConvertAll的好处是从一开始就对目标数组进行了右对齐,所以不会分配多个数组,使用方便。

这里的checked导致intushort的转换如果检测到溢出会抛出异常;这是默认情况下完成的。

从 int 数组中获取 ushort 数组的简单方法是:

public static void Main(string[] args)
    {
        int[] intArr = new int[5]{1,2,3,4,5}; // Creates an array of ints 
        ushort[] ushortArr = new ushort[5];   // Creates an array of ushorts

        // Copy the int array to the ushort array
        for(int i=0; i<intArr.Length; i++){
            ushortArr[i] = (ushort)intArr[i];
        }

        // Prints the ushort array
        foreach(ushort u in ushortArr){
            Console.Write(u+", ");
        }
    }

这个程序的输出是:

1, 2, 3, 4, 5,

注意:需要确保ushort数组的长度与int数组的长度一致

我相信这是一个非常简单的解决方案。 希望对您有所帮助:)

有更简洁的替代方案,但假设您需要在 int 不能是 unsigned short 时执行某些操作:

    public ushort[] ToUnsignedShortArray(int[] intArray)
    {
        if (intArray == null)
        {
            return new ushort[0];
        }

        var shortArray = new ushort[intArray.Length];
        for (var i = 0; i < intArray.Length; i++)
        {
            // add your logic for determining what to do if the value can't be an unsigned short
            shortArray[i] = (ushort)intArray[i];
        }

        return shortArray;
    }