我有一段返回uint数组的C#代码,但我想用C++来实现。我查看了其他帖子;它们使用uint指针数组,而我的数组不是。请问有谁知道如何正确返回uint16_t数组?
这是正常运行的C#代码
public static UInt16[] GetIntArrayFromByteArray(byte[] byteArray)
{
if ((byteArray.Length % 2) == 1)
Array.Resize(ref byteArray, byteArray.Length + 1);
UInt16[] intArray = new UInt16[byteArray.Length / 2];
for (int i = 0; i < byteArray.Length; i += 2)
intArray[i / 2] = (UInt16)((byteArray[i] << 8) | byteArray[i + 1]);
return intArray;
}
这是一个创建语法错误的 C++ 代码
uint16_t[] GetIntArrayFromByteArray(byte[] byteArray)
{
//if ((byteArray.Length % 2) == 1)
//Array.Resize(ref byteArray, byteArray.Length + 1);
uint16_t[] intArray = new uint16_t[10];
for (int i = 0; i < 10; i += 2)
intArray[i / 2] = (uint16_t)((byteArray[i] << 8) | byteArray[i + 1]);
return intArray;
}
std::array
或std::vector
怎么样? - JVApenbyteArray
有多大。在C++中,数组没有任何叫做“Length”的东西。如果你不知道如何“整合”,那么一本好的C++书籍会教你这个。这就是它存在的意义。stackoverflow.com不幸的是,不是一个交互式的网站,不能教你C++。只有一本好书才能做到。 - Sam Varshavchikuint16_t []
",会微笑着做出完全不同的事情),以及数组和指针之间的关系。如果没有对C++的基本原理有深入了解,这里的简单答案(返回一个指向uint16_t
的指针)实际上并不能帮助你多少。 - Sam Varshavchik