1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 117

Перекодировать из 16-бит в обычный текст

18.04.2016, 17:09. Показов 4045. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python до этого я не разу не видел. Дали задание, я начал читать книгу, но пока только нашел как читать и записывать txt. Конвертить строку и все. Конечно хотелось бы сразу готовый код, искушение велико)) Но опять же я так ничего не изучу. По этому подскажите мне то что написано в вар 1 и 2. А я дальше буду читать и мучатся)) Так то говорят все банально просто. Объяснили так.

Нужно написать не большую программку типа конвертера.
Допустим имеется документ txt (текст в шестнадцатеричной кодировке) или dll (бинарный)
Мы его открываем там и видим строки которые содержат 16 бит в каждой строке.
Мы читаем файл конвертим в 16-ую кодировку и записываем в файл txt так что бы мы потом могли этот файл прочитать как текстом так и в бинарном виде. А мне еще не нужны последние 8 бит. их мы не берем.

Вариант 1.
Мы должны прочитать эти из txt символы и перевести их в числа и буквы шестнадцатеричной кодировке. Ну то есть дать понять проге что это не символы, а код.
то есть мне нужна функция которая переводит символы в цифры. Подскажите мне эту функцию.

Или же Вариант 2.
Мы не меняя формат читаем файл так же в бинарном виде, а не txt. Там двоичный код который переводим в 16-ую кодировку и так же сохраняем. Но тут говорят есть хитрость чтения бинарного файла. Подскажите хитрость.

Добавлено через 18 часов 58 минут
Небольшое уточнение) Мне нужна функция которая показывает компу что символ 8= цифре 8) Я не знаю какая это функция((
И второе нужна функция которая ИНВЕРТИРУЕТ потом эти цифры и запишет в txt. Как инвертировать?

Добавлено через 2 минуты
Как правильно char превратить в integer что ли
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2016, 17:09
Ответы с готовыми решениями:

Нужно перекодировать картинку из 32 бит в 24 бита
Нужно перекодировать картинку из 32 бит в 24 бита потом в 16, 8, 4, 2 . Как это сделать и с чего начать. Картинка тип БМП. Картинка...

В одном ричбоксе сделать текст по середине и обычный текст?
Доброго времени суток, программисты. Требуется помощь. Каким образом можно разбить в одном ричбоксе заголовок и обычный текст? Допустим,...

Как преобразовать текст из формата RTF в обычный текст?
Как преобразовать текст из формата RTF в обычный текст?

11
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
18.04.2016, 17:42
Цитата Сообщение от ---DEMON--- Посмотреть сообщение
Как правильно char превратить в integer что ли
Python
1
2
>>> ord('a')
97
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 117
18.04.2016, 21:11  [ТС]
Jabbson, То есть я беру данный из txt? там символы типа 6000В5 846601 пропускаю через
Цитата Сообщение от Jabbson Посмотреть сообщение
>>> ord('a')
а на выходе программа поймет что это число уже
Цитата Сообщение от Jabbson Посмотреть сообщение
97
я правильно понял?

А как насчет инверсии?
как мне объяснили должно быть так мы читаем символ 9, программа понимает что это цифра 9, потом инвертируем и получаем 9=1001 бит, после инверсии 0110.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
18.04.2016, 21:19
Я слабо Вас понимаю.
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 117
19.04.2016, 01:48  [ТС]
Jabbson, Если бы я сам себя понимал((( Я не зная программирования ни как не могу понять своего руководителя. Я стажер на работе, начальник дал задание и как то мутно все это объяснил. Вот то что я вам объяснил. Я вообще не понимаю как это инвертировать код. Он говорит если бы я просматривал документ в бинарном виде файл dll то переводить символы в числа не надо было бы. Нужно было бы только инвертировать. Но что за странное понятие что прога понимает что это символ, а не цифра. Я читаю инфу с txt и вывожу в строку, все нормально распознается без проблем!!! Бред. А потом инвертировать?! Как это? Понимаю конвертировать, но инвертировать?! Не понимаю. несколько раз переспросил его не понимаю. Думал что не понимаю программирование по этому не могу его понять, но вы тоже не понимаете этот бред((
Есть файл dll, его открываем с помощью блокнота выбираем кодировку шестнадцатеричная и видим таблицу, каждая строка содержит 16 байт. строка (6000В5 846601 649385 730033 884493 94) последние четыре бита не берем. И вот читаем-переводим-инвертируем-записываем в txt и dll. Все

Добавлено через 1 час 3 минуты
Конечно это не правильно, но как то должно быть наверно так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
f = open('text.txt', 'r')
aString = input.read(18)        # Читаем только первые 18 байт
aString = input.readline()      # переходим читать следующую строку 
int(parts[1])                       # Преобразовать строку в целое число
numbers = [int(P) for P in parts]   # Преобразовать весь список 
numbers
f.close()
 
inv_d = {v:k for k, v in d.items()}  # инвертируем 
 
f = open('text2.txt','w')
f.write(S + ‘\n’)                   # Строки завершаются символом \n
f.write(‘%s,%s,%s\n’ % (z))         # Преобразует числа в строки
f.writelines(aString)                  
f.close()
Добавлено через 28 минут
Почему в этом месте ошибка?
Python
1
2
3
line 25, in <module>
    aString = input.read(18)
AttributeError: 'builtin_function_or_method' object has no attribute 'read'
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
19.04.2016, 11:16
Может потому что
Python
1
f.read(18)
Добавлено через 1 минуту
Ну а далее полный пипец. Использовать надо readlines в список, а потом с ним работать.
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 117
19.04.2016, 17:50  [ТС]
Marinero, Может тогда так?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
inf = open('input.txt', 'rb')   # читаем в бинарном виде
outf = open('output.txt','w')   # записываем текстом (но нужно что бы читалось и в тексте и в бинарном)
 
for line in inf                 # читаем построчно
    lines = inf.read(18)        # нужно читать по 18 байт из строки вроде. В книге написано это будет так(18)
    def inv (1=0, 0=1):         # вроде как присваивание(инверсия)
        return(x)
    print(lines)                # просто проверить на экране то работает(для себя)
    data = inv(data)            # тут я не знаю как указать что инвертируемые данные будут записываться подумал присвоить переменную, но ошибка
    outf.write(data)            # запись этих данных
 
inf.close()
outf.close()
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
19.04.2016, 17:52
Цитата Сообщение от ---DEMON--- Посмотреть сообщение
def inv (1=0, 0=1):
* * return(x)
Я нарекаю это функцией Чистой Лжи!
ps. я бы еще в конце на ноль поделил - на всякий случай.
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 117
19.04.2016, 18:19  [ТС]
Jabbson, Да это бред, он на это и ругается, но как написать? Я что то не нашел как присваивать то?

Добавлено через 8 минут
Сейчас дома начал тут ошибку выдавать( Почему? Версий python разные у меня 35 там 33(4)
Python
1
for line in inf
Добавлено через 2 минуты
А : ))
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
19.04.2016, 20:06
Цитата Сообщение от ---DEMON--- Посмотреть сообщение
Сейчас дома начал тут ошибку выдавать( Почему?
Потому что в конце этой строки не хватает двоеточия.

Добавлено через 53 секунды
Но теперь я кажется понял, что означает A : ))
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 117
20.04.2016, 03:24  [ТС]
grizlik78, Jabbson, Marinero, Все таки кто нибудь подскажет мне как мне это написать. Начальник сказал все очень просто и банально. Но я что то не могу понять. Функций инверсии нет. Значит нужно простыми логическими функциями сделать, но как ? я думал может присвоением. Но как? Если бы у меня были какие то переменные присвоены тогда ладно. Но тут просто читаем данные с txt , допустим читаем сразу в бинарном виде. Тогда мы должны указать так что ли, типа имеем строку, если встречаем 0 меняем на 1, если 1 меняем на 0, так что ли?

PHP/HTML
1
2
def inv (str=0, 1, str=1, 0):
return(x)
я не знаю как правильно это пишется?!( Так будет работать?

Добавлено через 56 секунд
ошибка синтаксиса 1

Добавлено через 34 минуты
А если просто поставить ~ str, ну точно так же он говорит ошибка, а так то ведь это инверсия?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
20.04.2016, 08:15
Пока ты не научишься понимать начальника — помочь тебе практически невозможно
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
import binascii
import random
 
def inv_str(s, enc='latin-1'):
    return ''.join((chr(c ^ 0xFF) for c in str.encode(s, enc)))
 
def print_str_as_hex(s, enc='latin-1'):
    print(binascii.hexlify(str.encode(s, enc)))
 
rnd_string = ''.join((chr(random.randint(0, 255)) for i in range(10)))
 
print_str_as_hex( rnd_string )
print_str_as_hex( inv_str(rnd_string) )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2016, 08:15
Помогаю со студенческими работами здесь

Перекодировать текст
Здравствуйте. Помогите перекодировать строку, пожалуйста Dim TextVal As String = Mtxt.Contents'&quot;{\C256;F\U+043d = 38.1...

Помогите перекодировать текст!
кто может мне помочь перекодироваить код GB2312 в ??????????? е ????? 45 6 ????????????? 89 Создана отдельная тема.

Перекодировать текст в UTF-8
Подскажите как можно перевести введённій в ТЕдит текст в кодировку UTF-8?

Как перекодировать значения в текст
Доброго дня. Как перекодировать значения в текст? Например есть такой скрипт, который создается в новом столбце, если значение равно 1,...

Перекодировать текст с UTF-8 в ASCII
Даже не знаю с чего начать Задача такова: Есть файл в формате UTF8. Нужно его перекодировать в ASCII и сохранить.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru