[英]C Language - [copy in place] float* to char* and the reverse
我想將浮點緩沖區復制到char(字節)緩沖區中,而不為兩個單獨的緩沖區分配內存。 換句話說,我想使用一個緩沖區並復制到位。 問題是,如果我需要一個浮點緩沖區,那么為了將其復制到char上,我將需要一個char *指針; 如果我要從float *復制到float *,這將很容易,因為我只需為目標和源傳遞相同的指針。
例如。
void CopyInPlace(float* tar, float* src, int len) {
....
}
CopyInPlace(someBuffer, someBuffer, 2048);
void PackFloatToChar(char* tar, float* src, int len) {
}
????????
我該怎么做?
如果在同一指針中傳遞了memcpy,它是否就位?
如果要將float
指針轉換為char
指針,則強制轉換就足夠了。
float* someBuffer;
...
char* someBuffer2 = (char*)someBuffer;
您的問題似乎有點困惑。
您是否只想將浮點數數組解釋為char數組(用於寫入文件之類的東西?)。 如果是這樣,只需進行轉換即可。 C中的所有指針都可以由char *表示。
memcpy將從一個內存位置復制到另一個。 但是請仔細跟蹤您的“ len”參數是浮點數還是字節數。 如果“ len”是數組中的浮點數,請在memcpy調用中將其乘以sizeof(float)。
作為已建議的強制轉換的替代方法,您可能需要考慮使用聯合,例如:
union x {
float float_val;
char bytes[sizeof(float)];
};
兩種方式都不會有很大的不同,但是您可能會發現其中一種比其他方式更方便或可讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.