Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2014, 22:58   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Текстовый файл шестнадцатиричных чисел

Здравствуйте! есть файл, в котором записана последовательность чисел (20КБ сырого текста), нужно перевести его в двоичную сс, и подсчитать количество единичек, пробовал написать программу, чтобы разбить текст на подстроки размером в 255 символов, потом перевести эту строку в двоичное число и подсчитать количество единичек в нем, какие еще способы есть?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 18.11.2014, 23:03   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

дай файл.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.11.2014, 00:09   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

еще была мысль разбить на 50 символов, записать в динамический массив, перевести в десятичные числа, сложить десятичные числа, потом разбить как полином, а числа в полиноме уже переводить, но чувствую что мыслю неправильно, потому что допустим

1550=1000+500+50,

1550=11000001110

1000=1111101000
500=111110100
50=110010


В итоге получится не так) в общем запара полная, что предложите?

З.Ы.: Ребята!! Файл!!! Файл!! Здоровенный файл!...Фаааааааайл!)
Вложения
Тип файла: txt 16.txt (19.5 Кб, 122 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.11.2014, 00:21   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

все намного проще, считываешь 1 символ из "шестнадцатиричного" файла и записываешь 4 символа в "двоичный" по следующей схеме:

Цитата:
Bin Hex
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
и считай тут единички сразу.
можно и большее количество считывать, но думаю мысль ясна.
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 19.11.2014, 00:21   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

файл получил, в нём ровно 20000 16-ричных цифр.
теперь подробно напиши, во что его переработать.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.11.2014, 00:31   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

файл перерабатывать ненужно (по крайней мере пока :D), просто подсчитать количество единичек, алгоритм такой, счетный цикл в стринглисте от 0 до 19999 с копированием в массив, потом перевод каждого элемента массива в двоичное число, двоичное число в строку, цикл от 1 до длины строки с подсчетом еденичек, заморочено, а в экселе нет автоперевода, (на делфи думаю проще программу такого рода написать чем на Си)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.11.2014, 00:40   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

короче, надо каждую 16-ричную цифру из файла взять и узнать кол-во единиц в ней (от 0 до 4), приплюсовать это кол-во общей сумме? в ҡонце цикла выдать сумму?
так штоль?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.11.2014, 00:44   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

да, количество единичек выдать в кц:D, а вот придумал еще одно

itog:word;
...
цикл до 19999
копи символ, перевод в char
case символ of
0: inc(itog,0)
..
f: inc(itog,4)
end;
кц;
вывод итог;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.11.2014, 00:53   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Код:
case symbol of
  '1', '2', '4', '8':           cnt:= 1;
  '3', '5', '6', '9', 'a', 'c': cnt:= 2;
  '7', 'b', 'd', 'e':           cnt:= 3;
  'f':                          cnt:= 4;
else                            cnt:= 0;
end;
можно другим способом, но и так сойдёт.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.11.2014, 00:57   #10
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

зачем массивы? читаешь посимвольно до конца файла (на случай если изменят кол-во чисел в файле), символ кидаешь в функцию которая на выходе дает количество двоичных единичек в шестнадцатиричном прочитанном числе. суммируешь и все.

Код:
function quantityOneInHex(const AHex: Char): byte;
begin
  case AHex of
    '0': result := 0;
    '1','2','8': result := 1;
    '3','5','6','9','a','c': result := 2;
    '7','b','d','e': result := 3;
    'f':  result := 4
  end;
end;

begin

while пока не конец файла do
begin
  прочитываем символ из файла
  sum := sum + quantityOneInHex(sumbol);
end;
writeln(sum);
end.
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Склейка шестнадцатиричных чисел, чтение с COM порта vpn Общие вопросы C/C++ 2 05.02.2013 10:05
4. Дан текстовый файл. Создать символьный файл trum Помощь студентам 0 03.06.2012 19:20
Текстовый файл. В текстовом файле t1 записана последовательность целых чисел,разделенных пробелами (пробелов можеть быть больше од kazbek1 Паскаль, Turbo Pascal, PascalABC.NET 1 18.05.2012 07:24
Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех локальных максимумов в порядке возрастания zzz6 Помощь студентам 1 04.07.2011 12:59
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55