我有一個unsigned char數組[248];填充字節。就像2F AF FF 00 EB AB CD EF ..... 這個數組是我的字節流,我將數據從UART(RS232)存儲爲緩衝區。將字節轉換爲C中的Int/uint
現在我想將字節轉換回我的uint16和int32's。
在C#中,我使用了BitConverter類來做到這一點。例如:
byte[] Array = { 0A, AB, CD, 25 };
int myint1 = BitConverter.ToInt32(bytes, 0);
int myint2 = BitConverter.ToInt32(bytes, 4);
int myint3 = BitConverter.ToInt32(bytes, 8);
int myint4 = BitConverter.ToInt32(bytes, 12);
//...
enter code here
Console.WriteLine("int: {0}", myint1); //output Data...
C中是否有類似的函數? (無.NET,我用的是KEIL編譯,因爲代碼運行在一個微控制器)
與問候 山姆
解決方案: 方式)
,我首先得轉換或初始化數組一個uint8_t ARRAY [248]; 然後我用這個代碼在您的幫助:
uint32_t* myint1 = (uint32_t *)&RXBUFF[2]; //test
uint16_t* myint2 = (uint16_t *)&RXBUFF[6]; //test3
注意: 十六進制的int值「1985」被myint2表示爲0x07C1。我發送的字節是「C1 07」,因此微控制器正在更改字節順序
我也將測試其他方法。
WR山姆:)
如果它的大端是什麼? – Sam
然後你移入最低有效位而不是最高有效位。 – devsnd
@twall,我認爲你的意思是字節。 –