編輯:錯誤的num2類型已被更正。將字符數組轉換爲整數
您好,
我有一個包含從一個二進制文件中讀取原始整數數據已知大小的一些字符陣列。
所有這些數組的大小都有一個整數的大小。
我想問問以下操作在所有正常情況下是否安全準確,假設原始數據的末端性和運行此代碼的計算機一致。
char arr1[4] = { ... };
char arr2[2] = { ... };
uint32_t num1 = *static_cast<uint32_t*>(arr1); /* OR num1 = *(uint32_t*)arr1 in C */
uint16_t num2 = *static_cast<uint16_t*>(arr2); /* OR num2 = *(uint32_t*)arr2 in C */
謝謝!
既然它是一個二進制文件,你最好將原始整數讀入一個整數數組。 – chrisaycock 2010-12-07 19:19:56
不要一次聲明多個變量。它可能導致微妙的錯誤。 https://www.securecoding.cert.org/confluence/display/seccode/DCL04-C.+Do+not+declare+more+than+one+variable+per+declaration – 2010-12-07 19:23:22
直接將字符內存轉換爲一個整數只能工作在字節對齊的CPU上,而不是字對齊。如果你只是/總是在Intel x86上運行,那不會是一個問題。 – 2010-12-07 19:36:26