如何將short int []轉換爲char *?將short int []轉換爲char *
short int test[4000];
char* test2;
我嘗試這樣做:
test2 = (char*)test[4000]
錯誤 - > PTR無效
如何將short int []轉換爲char *?將short int []轉換爲char *
short int test[4000];
char* test2;
我嘗試這樣做:
test2 = (char*)test[4000]
錯誤 - > PTR無效
所以你有一個數組形式的緩衝區,並且你想把它的二進制內容寫入一個文件。你不喜歡這樣:
if (fwrite(test, sizeof(test), 1, f) < 1)
{
// handle error here (write failed)
}
fwrite()
函數用於二進制數據寫入到文件(fread()
閱讀)。它需要一個void*
指針,因此它可以用於任何類型(並且C++隱式地將任何其他指針/數組轉換爲它)。
sizeof(test)
決定了確切的數組的大小。如果你不想寫全部(即只填充它的一部分),你想使用sizeof(short) * N
,其中N是填充元素的數量。
1
這裏意味着有一個數據塊要寫;因此fwrite()
會立即寫入整個數據。 f
是您要寫入的文件。並返回寫入的塊數(成功時爲1
,故障時爲0
)。
爲了完整起見,我要指出,只有使用的fwrite()
的方法之一。這可能是多一點的語義使用類似:
fwrite(test, sizeof(short), N, f)
但隨後fwrite()
實際上可能只寫數據的一部分,你需要關心這個。換句話說,如果返回小於N,則必須重新編寫剩餘部分。
你在做什麼可能是一個壞主意,但是......
test2 = (char*) test;
喜歡這個:
test2 = (char*)test;
test[4000]
意味着4001 st項目的數組test
,而不是陣列本身。
一般來說,這不是一個好主意。至少,你的程序在大端系統和小端系統之間是不可移植的。儘管如此,如果你正在編寫一個特定的微控制器,沒關係。
你想*轉換類型*或*轉換值*?換句話說,'test2'應該包含什麼,你想用它做什麼? –
大概你*是*試圖訪問原始的二進制數據,而不是試圖輸出一個字符串? –
測試是一個緩衝區,我會把它寫在文件上,但是fprint需要一個char *。有更好的解決方案嗎? – user1611777