Какова цель шестнадцатеричного кодирования для двоичных данных?

StackOverflow https://stackoverflow.com/questions/1014308

Вопрос

Мне немного любопытно, почему можно использовать шестнадцатеричное кодирование поверх base64. Мне кажется, что база 64 более эффективна. В частности, почему базы данных всегда используют шестнадцатеричное кодирование? Это историческая проблема, или я что-то упускаю из шестнадцатеричного кодирования?

Это было полезно?

Решение

Вы должны быть настоящим фанатом, чтобы читать BASE64 с экрана.

В Oracle , когда я запускаю HEXTORAW , я могу получить некоторое представление о том, что находится в поле RAW , но я не смог с <код> BASE64 .

Например, когда я вижу много 0x3F , я знаю, что есть что-то с кодировкой.

И внутренне, это просто двоичные байты, больше нет необходимости кодировать их, кроме как показать человеку на другой стороне экрана.

Другие советы

Это хороший компромисс между эффективным использованием пространства и удобочитаемостью. Битовые паттерны становятся очень очевидными в шестнадцатеричном формате, в то время как другие базы не так ясны.

что легче читать, 0x8080 или 32896? Я бы сказал, что шестнадцатеричное значение.

Он также имеет свойство nice, согласно которому каждая шестнадцатеричная цифра равна полубайту (следовательно, каждая пара равна байту).

Гораздо проще понять смысл гексагона в вашей голове, чем основанием 64.

Что касается базы данных, помните, что существует разница между отображением данных и их хранением. Скорее всего, данные просто отображаются в шестнадцатеричном виде.

Base64 не работает, если вы хотите использовать полученные значения в качестве имен файлов в Windows, потому что base64 использует как прописные, так и строчные буквы. Я уверен, что бывают и другие случаи, когда его нельзя использовать по аналогичным причинам.

Согласитесь с другими ответами относительно читабельности: шестнадцатеричные цифры хорошо совпадают на 8-битных байтах, а base64 " цифры " нет, и одна цифра может содержать части двух байтов.

В случае хранения строк (с «потенциально» безопасным кодированием XML) вы могли бы получить еще большую эффективность с ASCII 85, так как это раздувание 5/4 вместо 4/3 для base64.

Но еще труднее "прочитать" затем base64. И не многие приложения поддерживают его, поэтому вам часто приходится писать собственные классы / функции для кодирования и декодирования.

Я бы предположил, что ваша база данных действительно хранит данные в двоичном виде, но редактор запросов покажет их с использованием шестнадцатеричного кодирования. Это то, что будет делать SQL Server Query Analyzer.

Я полагаю, это просто вопрос личных предпочтений ... Шестнадцатеричное намного проще для меня, чем читать что-то в Base32 или Base64

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top