Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90

Как перевести в Unicode с обратным порядком байтов?

14.07.2020, 16:04. Показов 3228. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как перевести в Unicode с обратным порядком байтов?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.07.2020, 16:04
Ответы с готовыми решениями:

ReadFile и UNICODE с обратным порядком байт
Что делать если надо считывать с файла, закодированного в UTF-16 LE. То есть с обратным порядком байтов. 0xFF 0xFE - > 0xFE 0xFF ...

Вывести число с обратным порядком цифр
Вывести число с обратным порядком цифр. помогите) Добавлено через 19 минут вот такое получилось...ето правильно? uses crt; ...

Функция возвращающая число с обратным порядком цифр
Нужно написать функцию, которая воспринимает целое значение и возвращает число с обратным порядком цифр. Моя программа почему-то выводит...

53
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 17:43
Студворк — интернет-сервис помощи студентам
Еще раз спрашиваю:
Цитата Сообщение от liv Посмотреть сообщение
что собой представляют данные? Внутри может быть байт '\0'?
Цитата Сообщение от WalStrile Посмотреть сообщение
big-endian
Речь идет о порядке байт в исходной строке?
Спрашиватся, каков порядок байт в UTF-16? Два байта могут быть записаны двумя способами

Добавлено через 5 минут
WalStrile, кажется, я понял
Порядок исходных байт остается неизменный. Формируем UTF-16 с порядком старший вперед.
Например, код '1' = 0x31 преобразуется в 0x0031
Правильно?
0
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
14.07.2020, 17:48  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Как потом собираетесь это использовать?
Далее нужно сравнивать строку с этой строкой юникод обратным порядком байт

Добавлено через 1 минуту
liv, ну да..
0
14.07.2020, 17:54

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Это какой такой? Какой тогда прямой порядок?
Офигенные вопросы задают люди с шильдиком "Эксперт C++", который вроде как ******** язык.

0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 17:55
Ну а на этот вопрос будет ответ?
Цитата Сообщение от liv Посмотреть сообщение
что собой представляют данные? Внутри может быть байт '\0'?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.07.2020, 18:02
argcargv, Мм а Вы знаете правильный ответ на вопрос? На который в принципе не может быть правильного ответа?
0
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
14.07.2020, 18:04  [ТС]
liv,
Цитата Сообщение от liv Посмотреть сообщение
что собой представляют данные? Внутри может быть байт '\0'?
Нет там лишь номера символов от 0 до 255
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 18:04
WalStrile, могу предложить такой вариант, возможно, неоптимальный, но вполне рабочий:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static wstring GetUnicodeString(unsigned char* ByteFile, unsigned long long startIndex, int Lenght)
{
    char *temp = new char[Lenght];
    char *ptr = (char*)&ByteFile[startIndex];
    for (int i = 0; i < Lenght; ++i)
        temp[i] = ptr[Lenght - i - 1];
    wchar_t *ws = new wchar_t[Lenght+1];
    MultiByteToWideChar(CP_ACP, 0, ptr, Lenght, ws, Lenght);
    ws[Lenght] = 0;
    for (int i = 0; i < Lenght; ++i)
        swap(((char*)&ws[i])[0], ((char*)&ws[i])[1]);
    wstring w{ ws };
    return w;
}
 
int main()
{
    unsigned char s[256] = "йцукенг";
    wstring wBE = GetUnicodeString(s, 2, 3);
}
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.07.2020, 18:04
Цитата Сообщение от WalStrile Посмотреть сообщение
Далее нужно сравнивать строку с этой строкой юникод обратным порядком байт
Чё?
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 18:07
WalStrile, что такое "номер символов 0"? Символ '0' или код 0x00?

Добавлено через 1 минуту
Avazart, так понимаю, есть где-то строки в кодировке UTF-16BE. И вот с ними потом будет сравнение неких подстрок из массива.
0
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
14.07.2020, 18:10  [ТС]
символы из таблицы acii

Добавлено через 1 минуту
liv, так возможно получить юникод с обратным порядком байтов в string??
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 18:14
Цитата Сообщение от WalStrile Посмотреть сообщение
номера символов из таблицы acii
Так код 0x00 тоже из таблицы ASCII! Он возможен или нет внутри подстроки?
Цитата Сообщение от WalStrile Посмотреть сообщение
так возможно получить юникод с обратным порядком байтов в string?
На этот вопрос уже был дан ответ. Вы читаете, что Вам пишут или нет? string работает только с однобайтными строками.
0
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
14.07.2020, 18:15
Цитата Сообщение от Avazart Посмотреть сообщение
Мм а Вы знаете правильный ответ на вопрос?
Прямым порядком называют big-endian.
0
0 / 0 / 0
Регистрация: 11.07.2020
Сообщений: 90
14.07.2020, 18:19  [ТС]
liv, хорошо, я понял. А как получить обычную unicode строку тогда? таким же способом
C++
1
2
3
4
static string UnicodeGetString(unsigned char* ByteFile, unsigned long long srartIndex, int Lenght)
    {
 
    }
Добавлено через 43 секунды
Цитата Сообщение от liv Посмотреть сообщение
Так код 0x00 тоже из таблицы ASCII!
да я же написал что те символы с 0 до 255
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 18:24
WalStrile, проблема в том, что 0x00 - признак конца строки C_STYLE. И функция MultiByteToWideChar() обработает строку только до этого нулевого байта, даже если будет указана большая длина.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.07.2020, 18:32
Цитата Сообщение от argcargv Посмотреть сообщение
Прямым порядком называют big-endian.
Очевидно что это вещь зависимая.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 18:34
Цитата Сообщение от WalStrile Посмотреть сообщение
как получить обычную unicode строку
Что значит "обычную"?
Я Вам дал код, который вернет wstring с UTF-16BE кодированной подстрокой. При условии, что внутри этой подстроки не будет байта '\0' = 0x00. Уже не устраивает?

Добавлено через 1 минуту
Правда, там еще не мешало бы проверить на уход за массив...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.07.2020, 18:36
Цитата Сообщение от liv Посмотреть сообщение
Avazart, так понимаю, есть где-то строки в кодировке UTF-16BE. И вот с ними потом будет сравнение неких подстрок из массива.
Ну он сказал std::string что все лишает смысла так как это всего лишь контейнер. В C# же скорее всего там юникодные (двухбайтовые) строки. Тут еще касательно сравнения могут быть проблемы с локалью в С++.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
14.07.2020, 18:48
Avazart, локаль, полагаю уже непринципиальна. Т.к. строки будут уже UTF-16BE. Но проблемы при сравнении все равно будут. Если на равно еще можно будет сравнить, то на больше/меньше просто уже не получится.
А не лучше ли использовать UTF16LE (младший вперед), которая более родная для Intel-овского порядка?

Впрочем, постановка задачи скрыта за семью печатями Оставим разгребать дальше ТС
А big-endian таки называется прямым порядком. Так исторически сложилось.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
14.07.2020, 19:06
Цитата Сообщение от WalStrile Посмотреть сообщение
А как получить обычную unicode строку тогда? таким же способом
В string можно записать UTF-8, но для UTF-8 порядок байт всегда один, потому что от него зависит корректность кодирования.

Вы бы лучше написали что вам по сути сделать надо. Вслепую переводить конструкции с одного языка на другой и с одной библиотеки на другую не всегда продуктивно.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.07.2020, 22:46
Цитата Сообщение от liv Посмотреть сообщение
Avazart, так понимаю, есть где-то строки в кодировке UTF-16BE. И вот с ними потом будет сравнение неких подстрок из массива.
А в массив какой? Откуда там данные? Если в коде зашит то одно, если из файла то другое (нужно учитывать кодировку исходников или файла)

Напомню что в винде используется UTF-16 LE. А исходники обычно хранят в UTF-8.
Нужно понять в какой кодировке и виде исходная строка и что хотим получить.

Добавлено через 6 минут
Тут https://docs.microsoft.com/en-... etcore-3.1 указаны кодовые страницы:

1200 utf-16 Unicode
1201 utf-16BE Unicode (Big-Endian)

Их и стоит использовать при перекодировании с помощью MultiByteToWideChar() и WideCharToMultiByte()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2020, 22:46

Программа выдающая число с обратным порядком цифр
Составить программу, воспринимающую на входе целое четырехразрядное десятичное число и выдающую на выходе четырехразрядное число с обратным...

Замена целочисленного массива на числа с обратным порядком цифр
Здравствуйте! помогите пожалуйста с задачей! в имющемся коде задачи составить процедуру (или несколько), которая заменяет все элементы...

Получить число к, отличающееся от n обратным порядком следования цифр
Дано пятизначное число n. Получить число к, отличающееся от n обратным порядком следования цифр. Нужно как-то с использованием циклов.

Функция: создание новой матрицы с обратным порядком столбцов
Дана матрица размером NxN. Написать функцию для создания новой матрицы с обратным порядком столбцов .

Получить целое число m с обратным порядком цифр по отношению к n
Дано целое число n. Получить целое число m с обратным порядком цифр по отношению к n. Использовать цикл по условию.на паскале помогите...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru