为什么 Javascript 中的 charCodeAt 的行为似乎与 PHP 的 chr 不同?我正在尝试实现base64

2023-12-25

我在 php 代码中使用了按位运算符,它返回 base64 中的解码字符串。我想实现与 javascript 相同的 php 代码。据我所知chr() https://www.php.net/manual/en/function.chr.php相当于String.fromCharCode(n) and ord() https://www.php.net/manual/en/function.ord.php is n.charCodeAt(0)。但两者最终的输出是不同的。

PHP 代码:-

<?php
$pass = "RuvEtrUt74gaDR5DufuChe";
$en = "";
foreach(str_split($pass) as $chr){
    $b1=((($chr = ord($chr)) >> 1) & 0xFF);
    $b2=($chr << (8 - 1));
     $en = $en.chr( $b1|$b2 );
}
$en = base64_encode($en); //Output:- )º;¢:9ª:›³°")š"º3º¡4²
echo ($en);
echo (base64_decode($en)); //Output:- Kbo7ojo5qjqbGrOwIimaIrozuqE0sg==

在 JavaScript 代码中:-

var pass = "RuvEtrUt74gaDR5DufuChe";
var en = "";
var passArr = pass.split('');
for (var i = 0; i < passArr.length; i++) {
    var b1 = (((passArr[i] = passArr[i].charCodeAt(0)) >> 1) & 0xFF);
    var b2 = (passArr[i] << (8 - 1));
    en += chr(b1 | b2);
}
console.log('en',en);//Output:- ⤩㪺㬻⊢㨺㤹⪪㨺ᮛᨚ㎳グ∢⤩᪚∢㪺㌳㪺↡㐴㊲
en = window.btoa(unescape(encodeURIComponent(en)));
console.log('en', en);//Output:- 4qSp46q646y74oqi46i646S54qqq46i64a6b4aia446z44Kw4oii4qSp4aqa4oii46q644yz46q64oah45C044qy
                     //need same as in php i.e, :- Kbo7ojo5qjqbGrOwIimaIrozuqE0sg==
function chr(codePt) {
    if (codePt > 0xFFFF) {
        codePt -= 0x10000
        return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF))
    }
    return String.fromCharCode(codePt)
}

正如您在上面看到的,javascript 输出与 php 输出不同。我需要 javascript 中的精确输出,该输出以 php 代码返回。谢谢


var res = String.fromCharCode(65);

这个功能会很好地工作,就像chr()函数返回 JavaScript 中的字符。

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

为什么 Javascript 中的 charCodeAt 的行为似乎与 PHP 的 chr 不同?我正在尝试实现base64 的相关文章

  • ExtJS 4:克隆商店

    我正在尝试找出如何克隆Ext data Store不保留旧的参考 让我用一些代码更好地解释一下 这是源商店 var source Ext create Ext data Store fields name age data name foo
  • 从 DOM 中删除后,动态添加的 JavaScript 脚本会继续执行

    因此 我正在创建一个 SPA 并使用 AJAX 将 HTML 页面加载到我网站的索引页面中 问题是 当包含我的一个页面时 它似乎会徘 徊并执行其中的 JavaScript 代码 即使它随后从 DOM 中删除 索引 html 正文 div d
  • 记录jQuery中调用的方法和参数

    假设我有 jQuery 并且加载了几个插件 我运行一些这样的代码 someSelector someMethod someParam someOtherParam someOtherSelector someOtherMethod anot
  • 一个 Next.js 路由中的两个不同子域

    我想使用构建一个新平台Next js https nextjs org React js https reactjs org and 反应路由器 https reacttraining com react router web guides
  • 使用 easyXDM 调整 IFrame 大小

    我将 iFrame 代码提供给客户 以便他们可以显示我网站上的动态内容 我希望其页面上的 iFrame 能够调整大小以适合我的内容 我按照 easyXDM 网站的说明进行操作 但也许我遗漏了一些东西 我没有收到任何错误 但 iFrame 保
  • 带有嵌入式 Ruby 的 Javascript:如何安全地将 ruby​​ 值分配给 javascript 变量

    我在页面的 javascript 块中有这一行 res foo 处理这种情况的最佳方法是什么 ruby var里面有单引号吗 否则会破坏 JavaScript 代码 我想我会用红宝石JSON http json org ruby var 上
  • NodeJS 无法加载 css 文件

    所以我正在尝试制作一个 NodeJS 服务器 并且我尝试保留尽可能少的附加组件 但是 我遇到了一个问题 我似乎无法加载任何内容CSS我调用的文件HTML文件 该调用似乎确实由服务器处理 但它不会显示在浏览器中 My 网络服务器 js fil
  • 页面点击其他路径后 $timeout 继续运行

    我在用yo angular fullstack生成器来构建我的网站 当用户注册该网站时 它将发送一封带有链接的激活电子邮件 当用户点击该链接时 会显示激活成功并超时进入主页 但是 当超时未结束 用户点击页面中的任何其他链接时 会跳转到其他页
  • 用于导出到 CSV/Excel 的数据 URI(无服务器端请求):浏览器支持/限制?

    以下问题 Javascript 或 Flash 导出至 CSV Excel https stackoverflow com questions 8150516 javascript or flash export to csv excel
  • Rxjs 可观察等待直到满足某些条件

    我有以下重试逻辑来重试操作 对于单个请求来说它工作得很好 对于多个正在进行的请求 我想在重试之前等待现有的重试逻辑完成 handleError errors Observable
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 如何使用 selenium 获取 javascript 结果?

    我有以下代码 from selenium import selenium selenium selenium localhost 4444 chrome http some site com selenium start sel selen
  • 全局定义的 AngularJS 控制器和封装

    根据 AngularJS 的教程 控制器函数仅位于全局范围内 http docs angularjs org tutorial step 04 http docs angularjs org tutorial step 04 控制器函数本身
  • 在外部单击时关闭弹出 div

    我有一个弹出 div 仅在单击特定按钮时显示 单击同一按钮时它甚至会隐藏 我的问题是 我还想在单击外部任何地方时隐藏 div 我无法这样做 因为弹出 div 位于主包装类内部 并且无法通过在包装类上使用 click 事件并使其隐藏来做到这一
  • while 循环元素状态 cypress

    我有一个问题 我想单击一个按钮直到它消失 但次数可能会有所不同 所以我想检查可见性状态 当可见 true时单击按钮 当可见 false时结束测试 但问题是我不知道如何循环从获取元素到末尾的所有链 单击按钮一次 由于中断而停止 如果我删除中断
  • Jade(当前称为“Pug”)模板引擎中的循环

    我想使用一个简单的循环 例如for int i 0 i lt 10 i 如何在 Jade 引擎中使用它 我正在使用 Node js 并使用expressjs 框架 例如 for var i 0 i lt 10 i li array i 你可
  • Chrome Prerender 功能每次都会被取消

    我正在尝试 Chrome 中的预渲染功能 但是当我检查网络时 我可以看到任何链接的请求都被取消 我使用以下语法 我尝试了现场演示http prerender test appspot com http prerender test apps
  • 如何仅在第一次访问时弹出模态窗口

    我有一个模式窗口 当您访问某个页面时会弹出 访客必须选择我同意或我不同意 我需要一个漂亮的小 jquery 脚本 它会记住谁之前访问过该页面并同意 这样他们每次访问该页面时就不会弹出模式 有人可以推荐一个好的脚本来使用吗 这是代码 div
  • Javascript / jQuery - 转换特殊 html 字符

    我有一个pre元素中包含一些 html 代码 该代码中有特殊字符 例如 lt 所以它不会破坏页面 然后我有一个 javascript 函数 它获取此 pre 元素的内容 突出显示它 使用 codemirror 并用突出显示的文本替换元素内容
  • html5 canvas 使用图像作为蒙版

    是否可以使用具有形状的图像作为整个画布或画布内图像的蒙版 我想将图像放置在画布中 并在图像上添加蒙版 然后将其另存为新图像 您可以使用 source in globalCompositeOperation 将黑白图像用作蒙版 首先 将蒙版图

随机推荐

  • Java - 按行总和对二维数组进行排序

    尝试编写一种按行总和递增的顺序交换二维数组的行的方法 例如 如果我有以下二维数组 int array 4 5 6 3 4 5 2 3 4 我希望它输出一个数组 如下所示 2 3 4 3 4 5 4 5 6 方法 a 计算每行的总和并生成总和
  • 单节点集群(minikube)上的 rook ceph 中的 1 pg 规模过小运行状况警告

    我正在将 rook ceph 部署到 minikube 集群中 一切似乎都正常 我向虚拟机添加了 3 个未格式化的磁盘并已连接 我遇到的问题是 当我运行 ceph status 时 我收到一条健康温暖消息 告诉我 1 pg 尺寸不足 我到底
  • 如何将 vb.net 中日期的空值传递给 sql 存储过程?

    我的应用程序是asp net 和vb 在我的页面中 我有一个用于传递日期的文本框 如果我没有输入日期并单击提交 则必须将空值传递给存储过程 我尝试了以下代码 例如DBNull Value and DateTime MinValue 在这种情
  • Cocoa 中的同级 NSView z 排序

    z 排序如何与 Cocoa 中的兄弟 NSView 一起工作 我很困惑 因为我在 Apple 的文档和 API 中发现了相互冲突的信息来源 注意 子视图显然是在其父视图之上呈现的 我在这里明确谈论同级视图 假设A 是的 你可以定义同级的 z
  • Intellij spring集成流程图

    在 Intellij 中 我们是否有一个功能可以为各种 Spring 集成通道中的消息 事件处理生成流程图 给定一个复杂的 spring 集成 XML 配置文件 其中包含各种转换器 入站 出站通道和服务激活器 是否有办法以图形方式查看所有这
  • wrk2 和 Apache Benchmark(即 ab)工具之间有什么区别?

    wrk2 和 Apache 的 Benchmark 之间是否有显着差异 即ab 用于测试多线程请求 如果有的话 它们是什么 我问这个基于this https stackoverflow com a 56373673 6805866答案 因为
  • 如何根据条件相互比较行并仅保留一行

    我有如下要求 如果存在多于 1 个注释 姓名 姓氏和门的组 并且其中之一包含 NULL 则仅保留具有 Null 注释的记录并丢弃其他记录 IF Null 不是其中之一 并且注释包括 NOT AVAILABLE 和 REQUIRES 保留不可
  • 如何使用 Slick 对过滤器的结果进行计数?

    我面临一个我想简化的问题 很确定 事实上我做错了 Wanted 我想计算 id 1 的用户数量 在 SQL 语言中 我们假设它是这样的 SELECT COUNT FROM users WHERE id 1 Code 我使用的是 提升 形式的
  • 如何拥有棒棒糖开关按钮

    我想为我的应用程序提供棒棒糖样式的切换按钮 我怎样才能实现这个按钮 使它在旧版本的android上也看起来像这样 要在旧版本的 Android 上使用 Lollipop 样式切换按钮 您应该在布局 xml 文件中使用 SwitchCompa
  • 将 gcloud 与 Jenkins 结合使用

    我一直在尝试编写一个定期轮询 Google Cloud Storage 的脚本 当我正常运行它时 这工作得很好 但是如果我将它作为构建步骤包含在 Jenkins 中 它会给出一个403 Forbidden错误 这是因为没有gcloud au
  • 如何防止选择后关闭菜单?

    我正在使用jQuery 自动完成 http api jqueryui com autocomplete小部件 灵感来自这个问题 https stackoverflow com questions 6043506 jquery ui auto
  • 在 Angular 8 中使用 cli 命令添加 Web Worker 后出现错误

    Angular 8 为网络工作者添加了更好的支持 我没有运气让它发挥作用 有人知道我做错了什么吗 这是官方指南 https angular io guide web worker我跟着 使用此 cli 命令我生成了 Web Worker n
  • 在 scipy 中创建稀疏矩阵时,覆盖而不是添加重复的三元组

    在 scipy 中 要从三重格式数据 行 列和数据数组 创建稀疏矩阵 默认行为是对所有重复项的数据值求和 我可以更改此行为以覆盖 或不执行任何操作 吗 例如 import scipy sparse as sparse rows 0 0 co
  • React-native expo FileSystem.downloadAsync 损坏的图像

    我们有 RN 应用程序和服务器来存储图像 尝试根据用户从服务器下载一堆图像 并将它们显示在 RN 应用程序中 有时图像会被损坏 或者根本不显示 所以我必须重新加载应用程序才能使其工作 这甚至在很多时候都不起作用 或者清除存储并一次又一次下载
  • Jquery 和 JSF 找到 的特定 id [重复]

    这个问题在这里已经有答案了 我正在寻找匹配id for 输入文本在 JSF 中使用 Jquery 但它不起作用 我不知道为什么 JSF CODE
  • 无法更改 RVM 默认值

    我在更改默认 ruby 时遇到问题 运行 OS X Lion macbook work rvm list rvm rubies ruby 1 9 2 p290 x86 64 ruby 1 9 2 p318 x86 64 如您所见 1 9 2
  • 如何在单行上打印DataFrame

    With import pandas as pd df pd read csv pima data csv print df head 2 打印内容会自动格式化为多行 num preg glucose conc diastolic bp t
  • 是否可以知道用户是否正在文本字段中输入或删除字符?

    我正在使用文本字段委托方法 shouldChangeCharactersInRange 我想知道是否有任何方法可以判断用户是否正在删除字符或键入字符 有人知道吗 谢谢 BOOL textField UITextField textField
  • 如何在 macOS Mojave 上设置环境变量?

    我正在 macOS Mojave 上安装 THERMUS ROOT 热模型包 步骤之一 解压缩后 如下 设置环境变量 THERMUS 以指向包含 THERMUS 代码的顶级目录 我真的不知道该怎么办 我在 stackoverflow 上看过
  • 为什么 Javascript 中的 charCodeAt 的行为似乎与 PHP 的 chr 不同?我正在尝试实现base64

    我在 php 代码中使用了按位运算符 它返回 base64 中的解码字符串 我想实现与 javascript 相同的 php 代码 据我所知chr https www php net manual en function chr php相当