У меня есть указатель на символ и вам нужно сохранить 2 байта в памяти с помощью этого указателя. Пробовал это
*dataConfigured = configuredParameterCount;
*++dataConfigured = configuredParameterCount << 8;
Есть ли лучший код, кроме этого?
Предполагая, что тип configuredParameterCount
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;
Будьте осторожны - вам нужно убедиться, что памяти недостаточно.
dataConfigured
иconfiguredParameterCount