微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在特定格式的“S函数”Matlab中将十进制转换为十六进制?

如何解决如何在特定格式的“S函数”Matlab中将十进制转换为十六进制?

我使用的是 Matlab 2021a。在 Simulink 中,我提供输入值 (2748) 并期望以所需格式提供十六进制输出值。我们知道 simulink 不支持“字符”,我在 UINT8 中生成输出。但我的要求是生产:

Input : UINT16 ( 2748) 
output : UINT8 

y1[0] = 10 ( decimal conversion of "0A") 
y1[2] = 188 ( decimal conversion of "BC") 

我写了下面的转换代码

z[0] = *u0;       // z is a working vector with data type UINT16 and u0 is an input
z[1] = 16;
z[2] = fmod(z[0],16); 
z[3] = (z[0]-z[2])/z[1];
z[4] = fmod(z[3],z[1]); 
z[5] = (z[3]- z[4])/ z[1];
z[6] = fmod (z[5],z[1]);
z[7] = (z[5]- z[6])/ z[1];
y1[0]= z[7]; // giving output = 0   // y is output with data type UINT8 
y1[1]= z[5]; // giving output = 10
y1[2]= z[4]; // giving output = 11
y1[3]= z[2]; // giving output = 12

但我需要输出 -

y1[0] = decimal conversion of first two bytes = 00 10 > 10
y1[1] = decimal conversion of first two bytes = 11 12 > 188 

我还附上了 simulink 模块和输出。我可以就如何编写代码生成此类输出征求建议吗?simulink block

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。