我有一个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,我认为你的意思是字节。 –