gpt4 book ai didi

matlab - 为什么 char 在 Matlab S-Function 中存储为 2 个字节

转载 作者:行者123 更新时间:2023-12-02 08:23:06 25 4
gpt4 key购买 nike

我想将 uint8 数组作为参数传递给我的 S-Function:

inParam = char(uint8(1:7))

在 S-Function 中我执行了以下操作

UINT8_T *inParam = (UINT8_T *)mxGetPr(ssGetSFcnParam(S, PARAM_IN_PORT_NR)); //;

但我看到实际上数组元素存储为 2 个字节。

UINT16_T *inPorts = (UINT16_T *)mxGetPr(ssGetSFcnParam(S, PARAM_IN_PORT_NR)); //
// I can loop through the data
// This is only a snippet
*(inPorts++);

这是为什么呢?所有 Matlab 版本都会出现这种情况吗?

最佳答案

MATLAB 对字符向量和字符串使用 UTF-16 编码。例如,请参阅 definition of matlab::engine::String作为std::basic_string<char16_t> 。这在所有平台上都是一样的。我不知道 MATLAB 何时引入 Unicode 支持,但您可以假设过去 15 年的任何版本都使用 16 位字符编码。

考虑使用 mxGetString 获取字符串的 8 位 (ASCII) 表示形式,或 mxArrayToString 如果您需要支持 Unicode 字符。

关于matlab - 为什么 char 在 Matlab S-Function 中存储为 2 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59046462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com