如何将一串十六进制值转换为base64字符串

Posted

技术标签:

【中文标题】如何将一串十六进制值转换为base64字符串【英文标题】:how to convert a string of hex values into a base64 string 【发布时间】:2018-01-20 15:04:48 【问题描述】:

我正在创建一个 websockets 服务器,但我真的不知道如何将十六进制值(我从 sha1 散列中获得)转换为 base64 字符串。我的意思是,base64 字符串:

"b37a4f2cc0624f1690f64606cf385945b2bec4ea" 

不是:

"YjM3YTRmMmNjMDYyNGYxNjkwZjY0NjA2Y2YzODU5NDViMmJlYzRlYQ=="

它是:

"s3pPLMBiTxaQ9kYGzzhZRbK+xOo="

但是当我给它上面的 sha1 字符串时,我使用的库给了我第二个。那是因为上面的字符串不被视为十六进制值吗? 这些是我使用的库:

base64: http://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp sha1:http://www.zedwood.com/article/cpp-sha1-function

在我看来,我选错了。我可以用什么来让它工作?我需要将一些标头发送回客户端以建立连接,但我需要先执行这些步骤。

【问题讨论】:

Unicode 字符? base 64 编码对字符串中的字符进行编码。它不会尝试将其解释为十六进制数。您可能想改为编码 0xb3, 0x7a, 0x4f, ... 我使用的库可以应用到它上面吗?如果没有,我应该使用什么? Hexadecimal to base64 conversion的可能重复 获取一个返回原始字节的 SHA-1 函数,然后对其进行 Base64 编码。 【参考方案1】:

不同的语言有不同的点缀方式。我 c# 你可以使用 Convert.ToBase64String(hash);在 php 中,您可以使用 base64_encode(hash)。

【讨论】:

问题标记为 C++。即使问题是针对 C# 或 PHP,这些函数也无法解决问题。

以上是关于如何将一串十六进制值转换为base64字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何用JS将一段十六进制(HEX)字符串转换为汉字?

Base64String与十六进制之间的转换

Java将Base64转换为十六进制字符串[重复]

c语言如何实现16进制字符串转换为 base64

如何从 base 64 编码字符串中获取十六进制块?

在Javascript中按字节分组base64->缓冲区十六进制字符串?