如何在 JavaScript 中将十六进制字符串转换为 Uint8Array 并返回?

2024-07-01

我想转换一个十六进制字符串,例如bada55 into a Uint8Array然后再回来。


普通JS:

const fromHexString = (hexString) =>
  Uint8Array.from(hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));

const toHexString = (bytes) =>
  bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');

console.log(toHexString(Uint8Array.from([0, 1, 2, 42, 100, 101, 102, 255])));
console.log(fromHexString('0001022a646566ff'));

注意:此方法信任其输入。如果提供的输入长度为 0,则会抛出错误。如果十六进制编码缓冲区的长度不能被 2 整除,则最终字节将被解析为前面添加了一个0 (e.g. aaa被解释为aa0a).

如果十六进制可能格式错误或为空(例如用户输入),请在调用此方法之前检查其长度并处理错误,例如:

const isHex = (maybeHex) =>
  maybeHex.length !== 0 && maybeHex.length % 2 === 0 && !/[^a-fA-F0-9]/u.test(maybeHex);

const missingLetter = 'abc';

if (!isHex(missingLetter)) {
  console.log(`The string "${missingLetter}" is not valid hex.`)
} else {
  fromHexString(missingLetter);
}

资料来源:Libauth https://libauth.org/图书馆 (十六进制转宾法 https://github.com/bitauth/libauth/blob/bdc1d67a3181cf6fcfe796a7b4ae36ee3f98af0a/src/lib/format/hex.ts#L37)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中将十六进制字符串转换为 Uint8Array 并返回? 的相关文章

  • 无法使用带有 socket.io 的媒体源从媒体记录器跳转到流

    当首先加载视频观察客户端然后加载网络摄像头客户端时 以下代码可以正常工作 但是 如果顺序交换或以任何方式中断流 例如通过刷新任一客户端 则流将失败并且媒体源会将其就绪状态更改为关闭 我的假设是 在开始时接收的视频需要初始化标头才能启动 并且
  • 角度变量初始化

    我在角度控制器中有一个变量 scope abc 我有 Sails 作为后端 scope abc的初始值可以由后端在生成页面时确定 页面显示给用户后 scope abc 可能会也可能不会被用户更改 我可以让后端生成一个完整的静态页面 并让 A
  • 在 location.reload() 之后保持滚动位置

    我使用ajax 来更新所选的照片 如果成功 则刷新页面 用户可以看到所选的图像 它将有一个CSS边框 但当页面刷新时 位置又会回到顶部 我想知道重载后如何保持位置 我搜索了很多网站 仍然无法得到它 请指导我一下谢谢 EDIT 我在这里找到了
  • javascript 中可滚动区域/div 的增量单位?

    在 javascript 中我可以确保我的大 div 垂直滚动 仅以 比方说 16 像素为单位 在 Java 中 这些被称为 增量单位 我在 javascript 中找不到类似的东西 我想确保部分滚动时的某个区域 div 始终是视图 16
  • HTML 使用 Javascript 比较 2 个日期

    我正在尝试使用 Javascript 比较 2 个日期 如果 myDateL 位于 mydateR 之后 则单击该按钮时会显示一个消息框 我的代码有什么问题吗 我知道我见过类似的线程 但我无法理解 我希望有人能帮助我解决这个问题
  • jQuery 在变量中搜索文本?

    我有一个变量 其中包含一些文本 一些html 基本上可以是一个字符串 我需要在变量中搜索特定字符串 以便在包含该变量时以不同方式处理该变量 这是我正在尝试做的事情的一个片段 显然不起作用 each data results function
  • 使用 Razor,如何将布尔值渲染为 JavaScript 变量?

    如何将布尔值呈现给 cshtml 文件中的 JavaScript 变量 目前这显示了一个语法错误 您可能还想尝试 isFollowing Model IsFollowing true 更好的方法是使用 isFollowing Json En
  • 在 Javascript 中访问对象属性

    我正在尝试访问电子邮件和密码字段 但我不知道在哪里 0 来了 我正在从 rethinkdb 检索对象 它看起来不错 没有 0 但后来我使用 Lodash assign 像这样的方法 var user new User var finduse
  • .catch() 的承诺被拒绝,但在 Promise.allSettled 中显示为已履行[重复]

    这个问题在这里已经有答案了 这是问题的简化版本 有一些承诺 但很少 then 链条 以及一个 catch 错误处理块 每个承诺都可能解决或拒绝 因此我使用Promise allSetted根据排列顺序和状态了解哪个承诺失败了 当所有承诺都解
  • 邪恶的 Firefox 错误——“底层对象不支持参数或操作”

    我想弄清楚这里发生了什么事 我已经研究了几个小时了 似乎无法理解为什么会发生这种情况 我正在进行一些 AJAX 调用 但仅在 Mac OS X 上的 Firefox 版本 21 中不断收到此错误 这是错误 Exception A param
  • 控制台日志不打印函数中的变量

    尝试将变量 randomWord 打印到console log 但chrome说它没有定义 看起来它是为我定义的 为什么它不会打印到console log function strt get random word from words a
  • 使用 Getter 函数从 Angular 服务公开对象返回未定义

    这是代码 authServ getUser 从任何地方返回 一个空对象 对应于此 var 的声明 即使在我根据此 问题 1 对返回语法进行修改之后也是如此 谁能告诉我这是什么问题吗 我不明白为什么它不起作用 app factory auth
  • Phantomjs / Casper.js 带有旋转代理?

    我有一个简单的目标 使用以下任一方式加载网页phantom js 开箱即用 或casper js 很好也更容易 但是使用代理并旋转它如果当前列表不好 即网页加载失败或类似情况 则从列表中选择 我知道 casper js 有 proxypar
  • 当没有电子邮件客户端时,“mailto:”会做什么?

    我正在开发一个网站 什么是mailto 如果没有电子邮件客户端 如 Outlook Thunderbird 等 如何打开 它可以在我的电脑上运行 该电脑装有 Outlook 但如果有人想要怎么办 mailto 例如 在 gmail com
  • 使重复的scrollBy像jQuery的动画scrollTop一样平滑

    如何使重复的scrollBy调用更平滑 就像使用jQuery的animatescrollTop制作动画一样 目前它是跳跃的 页面在不同的滚动位置之间跳转 我怎样才能让它更顺畅 这是滚动代码 window scrollBy 0 10 scro
  • AngularJS ui-router:如何全局解析所有路由的典型数据?

    我有一个 AngularJS 服务 它与服务器通信并返回 申请表不同部分的翻译 angular module utils service Translations q http function q http translationsSer
  • 每个内每个内每个

    我是新使用 JSON 和 getJSON 函数等 我正在尝试从 JSON 中获取数据 该 JSON 会下降几个级别并且可以有多个子级 目前 我可以通过将 each 与另一个 each 一起使用来查看我想要的值 例如 each data fu
  • chrome 对象 console.log 中的奇怪行为

    当我尝试在 Chrome 中 console log 一个对象时 它在 console log 的第一行中指出 您可以在其中看到 Object 此处的小摘要 我的 posts 数组的长度为 0 posts Array 0 然而 当我展开帖子
  • 从 Verdaccio 软件包版本历史记录中删除版本

    我使用取消发布版本npm unpublish
  • 为 div 标签设置属性

    我有一个简单的代码 div class content div 我想使用 javascript 回显 div 标签内的某些内容以显示这种方式 div class content div 我需要使用 javascript 因为如果屏幕宽于 9

随机推荐