Nano Hash - криптовалюты, майнинг, программирование

Как мне вернуть главного героя из кода UTF-8 в JAVA?

Я делаю кодировщик-декодер ASCII. Я кодирую символы в UTF-8. Для кодирования я использую этот код:

private String asciiReturn(String inpString){
int codePoint = 0;
StringBuilder str = new StringBuilder();
for (int i = 0; i < inpString.length(); i++){
codePoint = Character.codePointAt(inpString, i);
i += Character.charCount(codePoint) - 1;
str.append(codePoint);
str.append(" ");
}
return str.toString();
}

Таким образом, я также могу кодировать все эти символы смайликов.

Например, «????????‍♂️» для этого смайлика я получаю 129335 127995 8205 9794 65039. Так что это в основном десятичное значение UTF-8 смайлика, и это именно то, что я хочу. Но моя проблема в расшифровке.

Я хочу: (Пример)

Входная строка: 72 117 104 33 129335 127995 8205 9794 65039
Выходная строка: Ха!????????‍♂️

Причина:
72 -> 'H'

117 -> 'u'

104 -> 'h'

33 -> '! '

129335 127995 8205 9794 65039 -> '????????‍♂️'

Заранее спасибо ????

09.08.2020

  • Вам нужно разделить по пробелу, проанализировать каждое целое число, а затем использовать метод StringBuilder::appendCodePoint. Попробуйте, и если это не сработает, кто-нибудь поможет. 09.08.2020
  • Это не имеет ничего общего с «расширенным ASCII». Расширенный ASCII — это набор однобайтовых наборов символов, которые имеют ASCII как байты 0–127. Ни один из расширенных наборов символов ASCII не поддерживает эмодзи. В любом случае нужно приложить некоторые усилия: что пробовали, а где застряли. 09.08.2020

Ответы:


1

Попробуй это.

private String decode(String inpString) {
    return Arrays.stream(inpString.split("\\s+"))
        .map(s -> Character.toString(Integer.parseInt(s)))
        .collect(Collectors.joining());
}

и

String input = "72 117 104 33 129335 127995 8205 9794 65039";
System.out.println(decode(input));

выход

Huh!????????‍♂️

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

static String asciiReturn(String s) {
    return s.codePoints()
        .mapToObj(Integer::toString)
        .collect(Collectors.joining(" "));
}

и

String s = "Huh!????????‍♂️";
System.out.println(asciiReturn(s));

выход

72 117 104 33 129335 127995 8205 9794 65039
09.08.2020
  • ВОТ ЭТО ДА!! Это сработало, большое спасибо... еще одна просьба. Пожалуйста, сэр... Пожалуйста, объясните, что на самом деле происходит в функции разделения? 09.08.2020
  • .split("\\s+") разбивает строку пробелами и сохраняет ее в массиве строк. \\s+ — это регулярное выражение, представляющее один или несколько последовательных пробелов. 09.08.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..