Hex 编码

在下方粘贴文本并点击编码将其转换为十六进制字符串。所有处理均在浏览器中本地完成。

已复制!

什么是十六进制编码?

十六进制编码将每个字节的数据转换为两个字符的十六进制字符串(00ff)。这对于检查二进制数据、调试网络协议和在代码中表示字节数组非常有用。

使用多个字节的UTF-8字符将产生多个十六进制对。

分隔符和大小写由你决定:字节之间不加东西可得到紧凑的字符串,加空格更好读,用冒号则是指纹和 MAC 地址常见的写法。一切都在你的浏览器中完成。

正在排查一个死活解不开的问题?

解不开的数据包通常是症状而不是病根:链路上某处做了两次编码、字符集是被假定而不是被声明、令牌签名所覆盖的字节和大家以为的并不完全一致。这类活我们在做,围绕集成、API 以及在它们之间传递数据的系统。

说说哪里出了问题

常见问题

十六进制编码用来做什么?
当需要由人来读这些字节时,用的就是十六进制。哈希、校验和、密钥、颜色值、MAC 地址、内存转储和抓包结果都以十六进制呈现,因为每个字节正好变成两个字符,位置能按列对齐,错了一个字节一眼就能看出来。它也是把二进制数据贴进源码的常规做法。
十六进制编码和 Base64 有什么不同?
十六进制更占地方,但更好读。每个字节变成两个字符,所以输出正好是输入的两倍,而 Base64 只多出约三分之一。作为回报,十六进制的对应关系固定而直白:指着一对字符就知道它是哪个字节,偏移量能用眼睛数,改动一个字节也不会牵动旁边。看重体积时 Base64 更划算,需要人来看时十六进制更好。
为什么一个字符有时会变成好几对十六进制?
因为十六进制编码的是字节而不是字符,而文本要经过 UTF-8 才变成字节。落在 ASCII 范围内的都是一个字节,也就是一对。带重音的拉丁字母、希腊字母和西里尔字母占两个字节,多数中日韩汉字占三个,表情符号占四个。所以五个字符的字符串变成二十对十六进制毫不稀奇。
该选哪种分隔符?
取决于这段输出要送到哪里。字节之间什么都不加,是代码和多数 API 所期待的形式,也是最短的。加空格让长字符串更好读,也是 dump 里常见的样子。冒号则是证书指纹和 MAC 地址的惯例。三种写法的字节完全相同,变的只是中间的标点。
十六进制编码等于哈希吗?
不等于,尽管两者常常一起出现。哈希是单向函数:它把任意输入压成固定长度的摘要,且无法还原成原文。十六进制则是把字节写下来的可逆方式。哈希值通常用十六进制显示,所以两者看起来很像,但把密码做成十六进制不会带来任何保护,只是得到同一个密码的更长版本。