【发布时间】:2017-06-01 09:06:19
【问题描述】:
int[] iBuf = new int[2];
iBuf[0] = 1;
iBuf[1] = 2;
short[] sBuf = new short[2];
Buffer.BlockCopy(iBuf, 0, sBuf, 0, 2);
result
iBuf[0] = 1
sBuf[0] = 1
iBuf[1] = 2
sBuf[1] = 0
My desired result
iBuf[0] = 1
sBuf[0] = 1
iBuf[1] = 2
sBuf[1] = 2
结果与我想要的不同。
有没有办法不使用循环进行转换?
【问题讨论】:
-
简单的答案是否定的——int 使用 4 个字节,shorts 使用 2 个字节——所以本质上你需要复制交替的字节对。下面给出的答案将起作用 - 但在他们将使用循环的方法的覆盖下。根据数组的大小,可以使用您自己的方法编写更快的解决方案。
标签: c# arrays type-conversion