Получение строки из массива байтов.

компьютеры числа Алгоритм

Есть масив из 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, но к сожалению, число не влезает.

Примечание:
Выход видимо только в длинной арифметике.
Не так изящно, но зато легкореализуемо.
Ответы:
Приведите пример.
Пример это исходные данные и какой результат должен быть для этих данных.
long byteArrayToLong(byte *);
void longToStr(long, char *);
Vovochkal,
Вся сложность и состоит в том что  long не хватит для представления 6 байтового числа.
В современной 32-битной ОС unsigned long это 8 байтов. Так что не беспокойтесь, всего хватает.
long long
Vovochkal>В современной 32-битной ОС unsigned long это 8 байтов. Так что не беспокойтесь, всего хватает


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.