Problems: 擴大災難的跡象 OP似乎想將符號位擴展到其他字節。 if(byte_order == LITTLE_ENDIAN_VAL) { //memcpy(blocks, payload, (is_signed ? data_len - 1 : data_len)); //blocks[7] = is_signed ? payload[data_len - 1] : blocks[7]; memcpy(blocks, payload, data_len); if (is_signed && ((const int8_t*)payload)[data_len - 1] < 0) { memset(blocks + data_len, 0xFF, 8 - data_len); } result = le64toh(result); /* little endian->host byte order */ 我將在else if(byte_order == BIG_ENDIAN_VAL)塊中留下類似的更改,供OP執行。