Как преобразовать хеш-функцию в правильное представление строки? [Дубликат]

Я думаю, что слишком поздно ответить на эту тему. Но я хотел бы поделиться своей идеей или способом разрешения проблемы с размером текста в устройствах с разностным разрешением. Многие сайты разработчиков Android предполагают, что мы должны использовать sp unit для размера текста, который будет обрабатывать размер текста для устройств с разностным разрешением. Но я всегда не могу получить желаемый результат. Поэтому я нашел одно решение, которое я использую из своих последних 4-5 проектов и его работы. Согласно моему предложению, вы должны поместить размер текста для каждого устройства разрешения, что немного утомительно, но оно выполнит ваше требование. Каждый разработчик должен прослушивать соотношение, подобное 4: 6: 8: 12 (h: xh: xxh: xxxh соответственно) . Теперь в папке res res проекта вам нужно создать 4 папки с размерами файла, например

  1. res / values-hdpi / dimens.xml
  2. res / values-xhdpi / dimens. xml
  3. res / values-xxhdpi / dimens.xml
  4. res / values-xxxhdpi / dimens.xml

Теперь внутри файла dimens.xml вам нужно разместить размеры текста. Я показываю вам код для значений-hdpi, аналогичным образом вам нужно поместить код для других значений разрешения / dimens.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">4px</dimen>
</resources>

Для других разрешений это похоже на xhdpi: 6px, xxhdpi: 8px, xxxhdpi: 12px. Это рассчитано с соотношением (3: 4: 6: 8: 12), которое я написал выше. Давайте обсудим другой пример размера текста с приведенным выше соотношением. Если вы хотите взять размер текста 12px в hdpi, то в другом разрешении это будет

  1. hdpi: 12px
  2. xhdpi: 18px
  3. xxhdpi : 24px
  4. xxxhdpi: 36px

Это простое решение для реализации требуемого размера текста для всех разрешений. Я не рассматриваю устройства с разрешением-mdpi. Если кто-то хочет включить размер текста для этого разрешения, то рацион похож на 3: 4: 6: 8: 12. В любом запросе, пожалуйста, дайте мне знать. Надеюсь, это поможет людям.

25
задан CodeCaster 8 June 2016 в 12:20
поделиться

2 ответа

Реализация может быть такой, что

public static String sha256_hash(String value) {
  StringBuilder Sb = new StringBuilder();

  using (SHA256 hash = SHA256Managed.Create()) {
    Encoding enc = Encoding.UTF8;
    Byte[] result = hash.ComputeHash(enc.GetBytes(value));

    foreach (Byte b in result)
      Sb.Append(b.ToString("x2"));
  }

  return Sb.ToString();
}

Редактирование: Выполнение Linq более сжато , но, возможно, менее читаемо :

public static String sha256_hash(String value) {
  using (SHA256 hash = SHA256Managed.Create()) {
    return String.Concat(hash
      .ComputeHash(Encoding.UTF8.GetBytes(value))
      .Select(item => item.ToString("x2")));
  }
} 

Изменить 2: .NET Core

public static String sha256_hash(string value)
{
    StringBuilder Sb = new StringBuilder();

    using (var hash = SHA256.Create())            
    {
        Encoding enc = Encoding.UTF8;
        Byte[] result = hash.ComputeHash(enc.GetBytes(value));

        foreach (Byte b in result)
            Sb.Append(b.ToString("x2"));
    }

    return Sb.ToString();
}
76
ответ дан pimbrouwers 20 August 2018 в 20:48
поделиться

Я искал встроенное решение и смог скомпилировать ниже ответ Дмитрия:

public static String sha256_hash(string value)
{
    return (System.Security.Cryptography.SHA256.Create()
            .ComputeHash(Encoding.UTF8.GetBytes(value))
            .Select(item => item.ToString("x2")));
}
0
ответ дан aaronsteers 20 August 2018 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: