【发布时间】:2019-08-22 10:53:38
【问题描述】:
我的 C# 代码返回 uint 数组,但我想在 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怎么样 -
你need to get a good C++ book。如图所示,从逻辑上讲,您不可能知道
byteArray有多大。数组在 C++ 中没有任何称为“长度”的东西。如果您不知道如何“集成”,那么这正是一本好的 C++ 书籍将教给您的内容。这就是它的用途。不幸的是,stackoverflow.com 并不是一个教你 C++ 的交互式网站。只有一本好书才能做到这一点。 -
好吧,碰巧同一本 C++ 书也会回答您的主要问题。它会准确地告诉你 C++ 中的数组是什么(提示:C++ 中并没有真正意义上的数组,这是海市蜃楼,编译器看到你声明“
uint16_t []”的请求,微笑,然后完全做其他事情),以及数组和指针之间的关系。如果不了解 C++ 的基本工作原理,这里的简单答案(返回指向uint16_t的指针)不会对您有太大帮助。
标签: c# c++ unsigned-integer