我有一個字符指針,需要使用此指針在內存中存儲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