Вы не можете преобразовать любую строку длины в байтовый массив длиной 32.
Java использует UTF-16 в качестве строкового кодирования, поэтому для хранения 100% строки, 1: 1 как байтовый массив фиксированной длины, вы бы на первый взгляд были ограничены 16 символами.
Если вы готовы жить с ограничением в 16 символов, byte [] bytes = s.GetBytes ();должен дать вам байтовый массив variable length, но лучше указать явную кодировку.например, byte [] array2 = str.getBytes("UTF-16");
Это не полностью решит вашу проблему.Теперь вам, вероятно, придется проверить, что байтовый массив не превышает 32 байта, и придумать стратегии для заполнения, возможного нулевого завершения (которое потенциально может съесть ваш бюджет персонажа)
Теперь, если вы неВам не нужно все строковое пространство UTF-16, которое Java по умолчанию использует для строк, вы можете избежать использования более длинных строк, используя другие кодировки.
ЕСЛИ это будет использоваться для любого другого стандарта иличто-то (я вижу ссылки на etherium), тогда вам нужно будет следовать их стандартам.
Если вы не пишете свою собственную библиотеку для непосредственного обращения с ней, я настоятельно рекомендую использоватьбиблиотека, которая уже существует, и, кажется, хорошо протестирована и используется.