Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подсчет количества единиц в битовом представлении символов строки  (Прочитано 8179 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tumanovalex
Помогающий

ru
Offline Offline

« : 21-09-2008 19:05 » 

Есть текстовая строка ANSI или Unicode, которая читается из файла. Тип строки известен. Хотелось бы для битового представления каждого символа в строке (в том числе знаков препинания, пробелов и др.) определить количество единиц в каждом символе. Хотелось бы написать одну программу для этих кодировок (если это возможно). Подскажите, пожалуйста, какие функции нужно использовать для решения этой задачи. Хотел бы использовать только функции Win32 и С, без С++. Может быть у кого-нибудь есть куски кода для решения этой задачи или ссылки? 
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-09-2008 19:40 » new

tumanovalex, ф-ий таких нет. Попробуй поиском поработать.
Например, тут была сходная по смыслу задача:
https://forum.shelek.ru/index.php/topic,15006.0.html
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 22-09-2008 03:21 » 

Ром, по моему ссылка не та )
Я так понимаю, нужно сначала отделить символы, потом посчитать единичные биты.

принимаем поток байтов со строкой.
1) если в текущем байте 7-й бит ==0, то символ - один байт.
2) если 7-й , 6-й и 5-й биты == 110 то символ - 2 байта

(и т.д. http://ru.wikipedia.org/wiki/Unicode)

а потом спокойно считаем биты )
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 22-09-2008 03:54 » 

Алексей1153++, по моему ты что-то не то говоришь. Не путай Unicode и UTF-8 - между ними нельзя поставить знак равенства. Да и с UTF-8 ты напутал малость - там от 1 до 4 (а в теории - до 6 байт с разными префиксами). И вообще это нафиг не надо: делается N ф-ий под каждый тип (char, wchar, мультибайт) и не надо никакого автоопределения.
В приведенной мной теме как раз решается задача подсчета бит - я это имел в виду. Просто ответ не в первом посте находится - надо целиком прочесть.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines