You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何像Java一样实现数据类型强制转换(如char强转)

JavaScript 实现等价Java异或编解码方案

核心逻辑对应关系

你给出的Java代码本质是基于UTF-16字符编码做对称异或运算,JS中不需要做复杂的类型转换,几个API和Java逻辑完全对应:

  • Java中取字符的数值:字符串索引取到char后自动提升为int做运算,对应JS的String.prototype.charCodeAt(index),返回指定位置字符的UTF-16编码整数
  • Java中(char)强转:把异或后的整数转回字符,对应JS的静态方法String.fromCharCode(数值)
  • JS的^异或运算符和Java行为完全一致,运算时会自动将值转为32位整数,不需要额外做类型处理

完整实现代码

因为异或运算的对称性,编码和解码用同一个函数即可,传入相同密钥执行两次就能还原原文:

function xorCipher(input, key) {
  let result = '';
  for (let i = 0; i < input.length; i++) {
    // 取字符编码 -> 异或运算 -> 转回字符拼接
    result += String.fromCharCode(input.charCodeAt(i) ^ key);
  }
  return result;
}

使用示例

const raw = "something";
const key = 12;

// 编码
const encrypted = xorCipher(raw, key);
// 解码:相同密钥再次运算
const decrypted = xorCipher(encrypted, key);

console.log(decrypted === raw); // 输出 true

兼容性说明

该实现和你给出的Java代码逻辑1:1对齐,对于普通ASCII字符、中文、特殊符号的处理结果和Java版本完全一致。由于Java的char和JS的charCodeAt都是返回UTF-16代码单元,即使是emoji这类占两个代码单元的字符,编解码结果也能和Java端保持匹配。

注意:该方案属于简单的混淆加密,安全强度很低,不要用于存储敏感数据。

内容的提问来源于stack exchange,提问作者Kvicala 0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:21:14