2016-11-27 73 views
-1

我有4個字節:如何在4個字節之間進行連接?

buffer_RX[3]= \x70; 
buffer_RX[4]= \xb4; 
buffer_RX[5]= \xc5; 
buffer_RX[6]= \x5a; 

我想將它們連接起來,纔能有這樣的表示0x70b4c55a:

我已經這樣做plaintext[1]= (rx_buffer[3]<<8)|rx_buffer[4]; 這是結果,我有:70b4

plaintext[1]= (rx_buffer[3]<<8)|(rx_buffer[4]<<8)|(rx_buffer[5]<<8)|rx_buffer[6] 

它不起作用。 我需要幫助。

+1

將每個「8」分別改變爲「24」,「16」和「8」。 –

+0

更多地移動它們。你有ORRed三個值到同一個地方。而'明文[1]'需要是一個32位無符號值。 –

+0

目前還不清楚「有這樣的表示」是什麼意思。您正在嘗試寫入的代碼會生成*值* 0x70b4c55a;這是如何表現取決於你的平臺。 –

回答

2

這是爲了做到這一點的一種方法:

plaintext[1] = (buffer_RX[3] << 24) | 
       (buffer_RX[4] << 16) | 
       (buffer_RX[5] << 8) | buffer_RX[6]; 
+0

@ nani92:是的,但你現在明白了爲什麼?學習這可能比沒有解釋給出答案更重要。 – Clifford

0

你必須明白,每個字節是8位,因此這4個字節爲32位。第一個例子是因爲您只使用16位和兩個字節,要使用32位和四個字節,您必須分別將每個字節移位24,16,8和0位,以便將其置於正確的位置。

plaintext[1]= (rx_buffer[3] << 24) | 
       (rx_buffer[4] << 16) | 
       (rx_buffer[5] << 8) | 
       rx_buffer[6] ; 
相關問題