Есть масив из 6 байт. Его нужно преобразовать в строку содержащую число в виде десятичных цифр, эквивалентное числу в масиве.
Масив организуется так: старшые байты первыми, если число меньше 6 байт вначале идут нули. Использовать можно только целочисленые типы int, long. На крайний случай использовать double, но не желательно.
Хочется хотя бы идей как сделать эти вычисления.
Примечание:
int = 2 байта
long = 4
double = 4
Примечание:
Какой тут пример то привести?
дело встало на строках:
void SixBytesToStr(byte *mas, byte *str)
{
byte cnt;
str[0] = 0x00;
for (cnt = 0; cnt < 6; cnt++)
if ( mas[cnt] != 0x00 )
break;
// тут cnt указывает на первый значащий байт
}
Решение будет на Си, но мне нужен сам алгоритм.
Примечание:
Исходные данные, допустим
byte mas[] = { 0x00, 0x00, 0x3e, 0x34, 0x7f, 0x00 }
На выходе должна получится строка: "1043627776"
Примечание:
Проблема именно в том, что нет типа, способного вместить весь диапазон или, хотя бы, 10^4
Примечание:
Vovochkal
У меня long четырёхбайтовый. Если бы это было не так, я бы и вопрос не задал и использовал printf, но к сожалению, число не влезает.
Примечание:
Выход видимо только в длинной арифметике.
Не так изящно, но зато легкореализуемо.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.