| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Преобразовать float в число с фиксированной точкой |
| Автор: debil 27.2.2009, 18:32 | ||
Помогите преобразовать число float не более 4-х значащих цифр ( например -135.0 или 45.97) в три-четыре байта, которые будут передаваться в СОМ порт, согласно описания:
void Float_To(unsigned char* data, float* value) { } value = StrToFloat(Edit1 -> Text); //..число находится здесь // какая то проверка на кол-во знаков Float24(pf.data_, &value); Label1 -> Caption = IntToHex(pf.data_[0],2); Label2 -> Caption = IntToHex(pf.data_[1],2); Label3 -> Caption = IntToHex(pf.data_[2],2); Label4 -> Caption = IntToHex(pf.data_[3],2); Из протокола видно: 215.5 передается как 0x18-0x6B-0x00 -или 0001-1000 =0110-1011 21.55 передается как 0x28-0x6B-0x00 -или 0010-1000 =0110-1011 2.155 передается как 0x38-0x6B-0x00 -или 0100-1000 =0110-1011 215.0 передается как 0x00-0xD7-0x00 -или 0000-0000 =1101-0111 255.0 передается как 0x00-0xFF-0x00 -или 0000-0000 =1111-1111 -255.0 передается как 0x80-0xFF-0x00 -или 1000-0000 =1111-1111 -255.5 передается как 0x99-0xFB-0x00 -или 1001-1001 =1111-1011 256.0 передается как 0x01-0x00-0x00 -или 0000-0001 =0000-0000 99.99 передается как 0x20-0x27-0x0F-0x00 -или 0010-0000 =0010-0111=0000-1111 |