Tôi có mảng char chưa ký [248]; chứa đầy byte. Giống như 2F AF FF 00 EB AB CD EF ..... Mảng này là Byte Stream của tôi mà tôi lưu trữ Dữ liệu của tôi từ UART (RS232) làm Bộ đệm.Chuyển đổi byte sang Int/uint trong C
Bây giờ tôi muốn chuyển đổi các byte trở lại thành uint16 và int32 của tôi.
Trong C# tôi đã sử dụng Lớp BitConverter để thực hiện việc này. ví dụ:
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ó chức năng tương tự trong C không? (Không .net, tôi sử dụng trình biên dịch Keil vì đang chạy trên một vi điều khiển)
Với mừng Sam
Giải pháp: Way A)
đầu tiên tôi đã phải chuyển đổi hoặc khởi tạo mảng như a uint8_t ARRAY [248]; Sau đó, tôi đã sử dụng mã này với sự giúp đỡ của bạn:
uint32_t* myint1 = (uint32_t *)&RXBUFF[2]; //test
uint16_t* myint2 = (uint16_t *)&RXBUFF[6]; //test3
Chú ý: Giá trị int "1985" trong hex được biểu diễn dưới dạng 0x07C1 trong myint2. Byte mà tôi đã mua là "C1 07" để Bộ vi điều khiển thay đổi Thứ tự Byte
Tôi cũng sẽ kiểm tra các Phương pháp khác.
WR Sam :)
nếu kết thúc lớn của nó thì sao? – Sam
sau đó bạn thay đổi các bit ít quan trọng nhất thay vì các bit quan trọng nhất. – devsnd
@twall, tôi nghĩ bạn có nghĩa là byte. –