Цитата:
По умолчанию ведь с пробелом выводится?
|
Фиг его знает. Не выводил.
Цитата:
Число 16 в 16-ричной системе счисленния будет как $10. В Precision записано 2, значит число состоит из двух цифр. В SignSpecialPlaces записано 1, значит одна из этих цифр используется для десятичной дроби. Получается, что число 1 было записано как "1,0".
|
Да уж, гениальная запись инта. Особенно напрягает, что в
доке-то написано:
SignSpecialPlaces: The sign bit (0 is positive, any other value negative). И ни слова про дроби.
Цитата:
Формата жопошнее чем BCD не видел в жизни.
|
Он удобен в одном применении - вывод. RTC-часики типа DS1307 в нем считают и отдают время. Учитывая, что работа с ними идет с МК, где деления нет и в помине, BCD очень удобно выводить на экран и вообще переводить в строку - не надо делить на 10. Тупо разбил маской на 2 части и прибавил 0x30 (хотя поскольку у меня в девайсе только цифры, даже прибавлять не надо, в моей кодировке всего 11 символов

). Ну а у меня запись времени в часики идет с компа.
В итоге забил на этот глюкомодуль и сделал проще:
Код:
function toBCD(val:byte): byte;
begin
if val > 99 then
result := 0;
else
result := ((val div 10) shl 4) + (val mod 10);
end;
Поскольку мне достаточно кодировать 1 байт.