使用javascript将Base64解码为十六进制字符串

问题描述 投票:11回答:3

需要使用javascript将Base64字符串转换为十六进制。

例:

var base64Value = "oAAABTUAAg=="

需要转换方法

输出(解码数据(十六进制))A0000005350002

我知道这是正确的,因为我可以使用这个网站http://tomeko.net/online_tools/base64.php?lang=en

并打入Base64字符串的oAAABTUAAg==并获得A0000005350002

我试过了什么?

https://github.com/carlo/jquery-base64 https://jsfiddle.net/gabrieleromanato/qaght/

我发现了很多问题

javascript jquery hex base64
3个回答
13
投票

atob()然后charCodeAt()会给你二进制&toString(16)会给你十六进制。

function base64toHEX(base64) {

  var raw = atob(base64);

  var HEX = '';

  for ( i = 0; i < raw.length; i++ ) {

    var _hex = raw.charCodeAt(i).toString(16)

    HEX += (_hex.length==2?_hex:'0'+_hex);

  }
  return HEX.toUpperCase();

}

console.log(base64toHEX("oAAABTUAAg=="));

5
投票

假设您希望将十六进制表示形式为字符串,则window.atob function(在大多数现代浏览器中可用)是您的第一步 - 它会将您的base64字符串转换为ASCII字符串,其中每个字符代表一个字节。

此时你拆分字符串,抓取每个字符的字符代码,然后将其转换为左边填充的base-16字符串。

function base64ToBase16(base64) {
  return window.atob(base64)
      .split('')
      .map(function (aChar) {
        return ('0' + aChar.charCodeAt(0).toString(16)).slice(-2);
      })
     .join('')
     .toUpperCase(); // Per your example output
}

console.log(base64ToBase16("oAAABTUAAg==")); // "A0000005350002"

(Or try it on JSBin)


3
投票

为什么不尝试以下代码?:

const buffer = Buffer.from(rawData, 'base64');
const bufString = buffer.toString('hex');
© www.soinside.com 2019 - 2024. All rights reserved.