atob()为啥明明表示base64toASCII却叫atob?(2)

news2024/11/22 12:07:50

上篇谈到JavaScript中的atob()函数实际是表示ASCII to binary而非ASCII to base64,那既然函数底层产生的是二进制内容,那为什么咱们在JavaScript环境中通过atob()解码可以直接得到字符串?答案下文揭晓ෆ( ˶'ᵕ'˶)ෆ   

 

在JavaScript中, atob() 函数确实用于将Base64编码的字符串解码为二进制数据,但这里的“二进制数据”并不是指原始的二进制格式(0和1序列),而是指二进制数据的字符串表示形式。这是因为JavaScript中的字符串是以UTF-16编码的,所以所有的数据最终都会以字符串的形式表现。

当你使用 atob() 函数解码Base64编码的字符串时,得到的结果是原始数据的UTF-16编码字符串。如果原始数据本身就是文本(如ASCII或UTF-8编码的文本),那么解码后的字符串可以直接打印出来,因为它是可读的文本。

这里有一个例子来说明这个过程:

```javascript

// 假设我们有一个Base64编码的字符串

var base64Encoded = "SGVsbG8gV29ybGQ="; // 这是 "Hello World" 的Base64编码

 

// 使用atob()函数解码

var decodedString = atob(base64Encoded);

 

// 打印解码后的字符串

console.log(decodedString); // 输出 "Hello World"

```

在这个例子中, atob() 函数将Base64编码的字符串解码为原始的文本字符串"Hello World"。即使 atob() 函数处理的是二进制数据,JavaScript引擎也会将这些数据转换为UTF-16编码的字符串,以便在JavaScript中使用。

如果尝试解码非文本数据(比如图片或文件的二进制内容),解码后的字符串可能包含无法在控制台中正确显示的字符,因为这些数据不是有效的UTF-16编码。在这种情况下,可能需要使用其他方法来处理这些二进制数据,比如将其转换为ArrayBuffer或Blob对象,然后进一步处理或显示。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2245312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 城市选择插件

uniapp城市选择插件 如上图 地址 完整demo <template><view><city-selectcityClick"cityClick":formatName"formatName":activeCity"activeCity":hotCity"hotCity":obtainCitys"obtainCitys":isSearch&quo…

实验室资源调度系统:基于Spring Boot的创新

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【Triton 教程】融合注意力 (Fused Attention)

Triton 是一种用于并行编程的语言和编译器。它旨在提供一个基于 Python 的编程环境&#xff0c;以高效编写自定义 DNN 计算内核&#xff0c;并能够在现代 GPU 硬件上以最大吞吐量运行。 更多 Triton 中文文档可访问 →https://triton.hyper.ai/ 这是根据 Tri Dao 的 Flash At…

近源渗透|HID ATTACK从0到1

前言 对于“近源渗透”这一术语&#xff0c;相信大家已经不再感到陌生。它涉及通过伪装、社会工程学等手段&#xff0c;实地侵入企业办公区域&#xff0c;利用内部潜在的攻击面——例如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等——获取关键信息&#xff0c;并以隐蔽的…

大数据入门-什么是Flink

这里简单介绍Flink的概念、架构、特性等。至于比较详细的介绍&#xff0c;会单独针对这个组件进行详细介绍&#xff0c;可以关注博客后续阅读。 一、概念 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在无边界和有边界数据流上进行有状态的计算。 Flink的四大基…

Excel如何批量导入图片

这篇文章将介绍在Excel中如何根据某列数据&#xff0c;批量的导入与之匹配的图片。 准备工作 如图&#xff0c;我们准备了一张员工信息表以及几张员工的照片 可以看到&#xff0c;照片名称是每个人的名字&#xff0c;与Excel表中的B列&#xff08;姓名&#xff09;对应 的卢易…

9个最佳WordPress PDF插件(查看器、嵌入和下载)

在过去的几年里&#xff0c;我们一直在使用不同的 PDF 插件在我们的网站上创建、编辑和嵌入文档。 然而&#xff0c;经过多次尝试和错误&#xff0c;我们意识到并不是每个插件都是相同的。事实上&#xff0c;为您的企业或电子商务网站选择合适的 PDF 插件可能是一项艰巨的任务…

java-贪心算法

1. 霍夫曼编码&#xff08;Huffman Coding&#xff09; 描述&#xff1a; 霍夫曼编码是一种使用变长编码表对数据进行编码的算法&#xff0c;由David A. Huffman在1952年发明。它是一种贪心算法&#xff0c;用于数据压缩。霍夫曼编码通过构建一个二叉树&#xff08;霍夫曼树&a…

Seatunnel运行时报错Caused by: java.lang.NoClassDefFoundError: com/mysql/cj/MysqlType

报错 [] 2024-11-21 16:46:27,526 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Fatal Error, [] 2024-11-21 16:46:27,526 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Please submit bug report in https://github.com/apache/seatunnel/issues[] 2024-11…

vue自定义指令--一键复制

vue项目中想要实现点击按钮一键复制&#xff0c;可以通过vue的自定义指令directive来实现。 一、新建directive.js文件 新建directive.js文件&#xff0c;用于定义所有的自定义指令。 import { Toast } from vant;const directive {// 一键复制copy:{bind (el, { value }) …

AI 大模型重塑软件开发的未来

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

python: generator model using sql server 2019

設計或生成好數據庫&#xff0c;可以生成自己設計好的框架項目 # encoding: utf-8 # 版权所有 &#xff1a;2024 ©涂聚文有限公司 # 许可信息查看 &#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎 # 描述&#xff1a; : 生成实体 # Author …

使用redis-shake工具进行redis的数据同步

前言&#xff1a; 工作中将常遇到测试环境和正式环境的数据同步或者需要进行数据迁移&#xff0c;对于mysql数据库的方案倒是不少&#xff0c;但是redis中如何快速便捷的迁移呢&#xff1f;答案是阿里云提供的:redis-shake RedisShake是阿里云基于豌豆荚开源的redis-port进行…

轻松实现文件远程传输:使用PicoShare搭建轻量级文件共享系统

文章目录 前言1. 本地安装Docker2. 本地部署PicoShare3. 如何使用PicoShare4. 公网远程访问本地 PicoShare4.1 内网穿透工具安装4.2 创建远程连接公网地址 5. 固定PicoShare公网地址 前言 什么是PicoShare&#xff1f; PicoShare 是一个由 Go 开发的轻量级开源共享文件系统。…

路由缓存后跳转到新路由时,上一路由中的tip信息框不销毁问题解决

上一路由tip信息框不销毁问题解决 路由缓存篇问题描述及截图解决思路关键代码 路由缓存篇 传送门 问题描述及截图 路由缓存后跳转新路由时&#xff0c;上一个路由的tip信息框没销毁。 解决思路 在全局路由守卫中获取DOM元素&#xff0c;通过css去控制 关键代码 修改文…

iOS 18.2 Beta 4开发者预览版发布,相机新增辅助功能

昨天刚连发iOS 18.1.1正式版、iOS 17.7.2正式版&#xff0c;今天凌晨&#xff0c;苹果就又发布iOS 18.2 Beta 4&#xff0c;据了解iOS18.2正式版将在 12 月初发布。那么这次的更新又有哪些变化呢&#xff1f;下面我们就来一起了解一下。 iOS 18.2 Beta 4的版本号为&#xff1a;…

PCB 间接雷击模拟

雷击是一种危险的静电放电事件&#xff0c;其中两个带电区域会瞬间释放高达 1 千兆焦耳的能量。雷击就像一个短暂而巨大的电流脉冲&#xff0c;会对建筑物和电子设备造成严重损坏。雷击可分为直接和间接两类&#xff0c;其中间接影响是由于感应能量耦合到靠近雷击位置的物体。间…

易语言学习-cnblog

易语言数据类型 数值转换命令&#xff08;自己学&#xff09; 数值到大写&#xff08;&#xff09;将一个数值转换到中文读法&#xff0c;第二个参数为是否为简体。 数值到大写&#xff08;123.44&#xff0c;假&#xff09; 猜测结果 数值到金额&#xff08;&#xff09;将双…

接口小练习

文章目录 1.字符串最后一个单词的长度2.字符串中的第一个唯一字符3.验证回文串 1.字符串最后一个单词的长度 计算字符串最后一个单词的长度&#xff0c;单词以空格隔开&#xff0c;字符串长度小于5000。&#xff08;注&#xff1a;字符串末尾不以空格为结尾&#xff09; 输入描…

26届JAVA 学习日记——Day14

2024.11.21周四 今天仍然在补充基础知识&#xff0c;项目进度较慢&#xff0c;明天再回顾一下Java8的新特性。 八股 操作系统 什么是缓冲区溢出&#xff1f; 缓冲区溢出是一种常见的计算机安全漏洞&#xff0c;它发生在程序试图将过多的数据写入缓冲区&#xff08;即一块用…