Вот метод, который на самом деле работает (на основе нескольких предыдущих полукорректных ответов):
private static byte[] fromHexString(final String encoded) {
if ((encoded.length() % 2) != 0)
throw new IllegalArgumentException("Input string must contain an even number of characters");
final byte result[] = new byte[encoded.length()/2];
final char enc[] = encoded.toCharArray();
for (int i = 0; i < enc.length; i += 2) {
StringBuilder curr = new StringBuilder(2);
curr.append(enc[i]).append(enc[i + 1]);
result[i/2] = (byte) Integer.parseInt(curr.toString(), 16);
}
return result;
}
единственная возможная проблема, которую я вижу, - то, если входная строка чрезвычайно длинна; вызов toCharArray () делает копию внутреннего массива строки.
РЕДАКТИРОВАНИЕ: О, и между прочим, байты подписываются в Java, таким образом, Ваша входная строка преобразовывает в [0,-96,-65] вместо [0, 160, 191]. Но Вы, вероятно, уже знали это.
Это для «режима разработки», когда браузер эффективно превращает документ в редактор. API execCommand возник в IE и позже был добавлен в HTML5. Какие именно команды поддерживаются, а также их поведение зависит от браузера. Доступ к буферу обмена считается угрозой безопасности.
Обновление: ну, document.execCommand
задокументирована в документации Mozilla DOM , но ее описание там немного отличается от документации MSDN.
Я все еще уверен, что это не в стандарте ECMA-262.