首页 > 其他分享 >仅做笔记用:base64字符串转换为十六进制形式表示的二进制数据

仅做笔记用:base64字符串转换为十六进制形式表示的二进制数据

时间:2024-07-07 12:20:04浏览次数:16  
标签:十六进制 字节 二进制 base64 hexData 字符串

使用 JavaScript 实现一个函数,参数是一个 base64 的字符串,将这个字符串解析成二进制数据,并将这个二进制数据的每个字节以一个十六进制两位数表示出来,每个字节的十六进制两位数之间空一格,每行 16 个字节,返回整理好的十六进制形式。

function base64ToHex(base64Str) {
  // 解析 base64 字符串为 Uint8Array 类型的二进制数据
  const binaryData = Uint8Array.from(atob(base64Str), c => c.charCodeAt(0));

  // 将每个字节转换为十六进制格式
  let hexData = '';
  for (let i = 0; i < binaryData.length; i++) {
    hexData += binaryData[i].toString(16).padStart(2, '0') + ' ';
    if ((i + 1) % 16 === 0) {
      hexData += '\n';
    }
  }

  return hexData.trim();
}

/*
输入:eJwFwc8NwWAAh+H3pz6VVpRKI5T4EyQicekBLRdCwjCkQ2hXEAdLuDmYgzks4Hl+BUvWmdIexIwnZRe9UQV5qIXGqI4s5KMaaqAVmqAXTht18Qo4S+Y9tJZZMN1ICZMYhYyONC90UoJIQZ/qAA3xr7IzubmKX8wH+4Z5YO6UtjI7meqQJQtSEk5kOnChR0hMpFz8/hq+FNg=
输出:
78 9c 05 c1 cf 0d c1 60 00 87 e1 f7 a7 3e 95 56 
94 4a 23 94 f8 13 24 22 71 e9 01 2d 17 42 c2 30 
a4 43 68 57 10 07 4b b8 39 98 83 39 2c e0 79 7e 
05 4b d6 99 d2 1e c4 8c 27 65 17 bd 51 05 79 a8 
85 c6 a8 8e 2c e4 a3 1a 6a a0 15 9a a0 17 4e 1b 
75 f1 0a 38 4b e6 3d b4 96 59 30 dd 48 09 93 18 
85 8c 8e 34 2f 74 52 82 48 41 9f ea 00 0d f1 af 
b2 33 b9 b9 8a 5f cc 07 fb 86 79 60 ee 94 b6 32 
3b 99 ea 90 25 0b 52 12 4e 64 3a 70 a1 47 48 4c 
a4 5c fc fe 1a be 14 d8
*/

标签:十六进制,字节,二进制,base64,hexData,字符串
From: https://www.cnblogs.com/wujiuqier/p/18288354

相关文章

  • 当谈论掩码数位和IP总数时,通常是指在特定子网掩码下可用的IP地址数量。IPv4地址由32位
    当谈论掩码数位和IP总数时,通常是指在特定子网掩码下可用的IP地址数量。IPv4地址由32位二进制数组成,用四个八位字段表示,每个字段用点分十进制表示,例如192.168.1.1。子网掩码用于确定一个IP地址中哪些位是网络地址,哪些位是主机地址。常见的子网掩码包括:/24子网掩码:255.255.255.......
  • 【Unity几种数据存储之间的区别】PlayerPrefs、Json、XML、二进制、SQLite数据存储之
    ......
  • golang go-bindata打包配置文件嵌入到二进制文件
    go-bindata打包配置文件嵌入到二进制文件项目中难免会用到一些静态资源和配置文件,但是常规打包的二进制文件无法再其他目录正常运行(静态资源和配置文件不存在)有类似需求的可以安装使用:go-bindata进行编译处理配置文件go-bindata(go-bindata)包实现将项目静态配置文件嵌......
  • 【GZIP压缩的二进制数据】
    目录方案概览欢迎关注微信公众号:数据科学与艺术作者WX:superhe199直接在自定义协议中嵌入GZIP压缩的二进制数据需要确保数据能够跨系统边界正确传输。这意味着,你需要在JSON之外定义一种方式来标记二进制数据的开始和结束,以及可能的长度信息。由于标准JSON不直接支......
  • 翻转一个整数的二进制数
    /** 翻转一个整数的二进制数*/#include<stdint.h>#include<stdio.h>uint32_treverse_bits(uint32_tn){//交换相邻位n=((n&0xAAAAAAAA)>>1)|((n&0x55555555)<<1);//交换每2位n=((n&0xCCCCCCCC)>>2)......
  • 【基础知识】497- 一文读懂Base64编码
    看到一篇特别好的文章:https://cloud.tencent.com/developer/article/1584718,感谢大佬分享。  一、为什么要使用base64我们知道一个字节可表示的范围是0~255(十六进制:0x00~0xFF),其中ASCII值的范围为0~127(十六进制:0x00~0x7F);而超过ASCII范围的128~255(十六进制:0x80~0......
  • IDA7.7 使用IDAPython搜索指定模式的二进制数据方法
    新版的ida弃用了idc.find_binary推荐使用ida_bytes.bin_search方法。ida_bytes.bin_search需要和ida_bytes.parse_binpat_str配合使用。ida_bytes.parse_binpat_str的功能类似于对正则表达式进行编译。ida_bytes.parse_binpat_str官方文档importida_bytesimportidaapiimpo......
  • jdk17 package sun.misc.BASE64Encoder 报找不到符号
    解决办法:对于只需要Base64编码的简单场景,可以考虑使用Java8及以上版本提供的内置`java.util.Base64`类,这是一个标准API,无需额外引入任何库: //importsun.misc.BASE64Encoder;//java8importjava.util.Base64;//java17publicclassBase64EncodingExample{......
  • 二进制中为什么负数是正数取反再加一
    二进制中的负数表示有一个重要的概念是补码,它是由对应正数二进制取反后再加1得到的。但是经常忘记为什么要这么表示,这里结合chatgpt解释做个简单的总结。补码(Two'sComplement)设计的逻辑来自于简化和统一计算机中有符号数的表示和运算。其设计逻辑可以追溯到计算机科学中的一......
  • CentOS 7基于开源项目制作openssh9.8p1 rpm二进制包修复安全漏洞CVE-2024-6387 ——
    2024年7月1日,官方发布openssh9.8版本,修复了安全漏洞CVE-2024-6387。此处主要基于开源项目https://github.com/boypt/openssh-rpms.git制作,之前也有写过类似的文章,这里就不再赘述。CentOS5/6/7基于开源项目制作openssh9.6p1rpm包——筑梦之路_centos6openssh9.6rpm-CSD......