我有一个字符指针,需要使用此指针在内存中存储2个字节值。 试过这个使用字符指针存储整数
*dataConfigured = configuredParameterCount;
*++dataConfigured = configuredParameterCount << 8;
除此之外还有更好的代码吗?
我有一个字符指针,需要使用此指针在内存中存储2个字节值。 试过这个使用字符指针存储整数
*dataConfigured = configuredParameterCount;
*++dataConfigured = configuredParameterCount << 8;
除此之外还有更好的代码吗?
假设类型是short
(2个字节),你可以简单地做到这一点
*((short*)dataConfigured) = configuredParameter;
但请务必注意通过dataConfigured
指出缓冲区有足够的空间。
正如@Calvin指出的那样,这可能会导致某些计算机体系结构出现问题(尽管它可以用于最常见的x86架构和x64架构)。但是,如果你想要在所有架构memcpy
是更安全的赌注(更慢但更安全)。
假设:
char dataConfigured[2];
uint16_t configuredParameterCount = 4711;
你可以这样做:
memcpy(dataConfigured, &configuredParameterCount, sizeof(dataConfigured));
,如果你有
char* dataConfigured = ..;
short data = 123;
你可以做
*((short*)dataConfigured) = data;
要小心 - 你需要确保有足够的内存保留。
使用联合? – Geoffroy
'dataConfigured'和'configuredParameterCount'的类型是什么 – MOHAMED
“更好的代码”可能意味着更快,消耗更少的RAM内存,消耗更少的程序内存,更安全,更可读,更易于维护......另外,我们不知道是什么类型变量是。你的问题需要澄清,否则任何人都不能回答(他们会尽力而为,即使他们不能,当然......)。 – Lundin