javascript - C 指针相当于 JavaScript 中的登录

标签 javascript c node.js

我正在尝试将此 c 函数转换为 javascript 类:

for(i=0; i<inputLen; i++)
{
    //Calculate the constants
    pucSeqX = m_pucSeqX;
    pucSeqM = m_pucSeqM;
    for(j=0; j<m_iRounds; j++)
    {
        *(pucSeqX++) = arc4_getRandom();
        *(pucSeqM++) = arc4_getRandom();
    }
    //The last m_iRounds-1 rounds
    ucPlain = rostrIn[i];
    pucSeqX = m_pucSeqX + m_iRounds1;
    pucSeqM = m_pucSeqM + m_iRounds1;
    for(j=m_iRounds-1; j>0; j--,pucSeqX--,pucSeqM--)
    {
        if(*pucSeqM <= ucPlain)
            ucPlain -= *pucSeqM;
        else
        {
            ucPlain += ~*pucSeqM;
            ucPlain++;
        }
        ucPlain ^= *pucSeqX;
    }

这是我的尝试:

  for(i = 0; i < buf.length; i++)
  {
    pucSeqX = m_pucSeqX
    pucSeqM = m_pucSeqM

    for(j = 0; j < m_iRounds; j++)
    {
      pucSeqX[j] = this.getRandom()
      pucSeqM[j] = this.getRandom()
    }

    console.log(pucSeqX)
    console.log(pucSeqM)

    ucPlain = buf[i]
    pucSeqX = m_pucSeqX + m_iRounds1
    pucSeqM = m_pucSeqM + m_iRounds1

    for (j = m_iRounds-1; j > 0; j--, pucSeqX--, pucSeqM--)
    {
      if (pucSeqM <= ucPlain)
        ucPlain -= pucSeqM
      else {
        ucPlain += ~pucSeqM
        ucPlain++
      }

      ucPlain ^= pucSeqX
    }

但它似乎没有产生相同的结果。我有什么遗漏的吗?

我对 C 代码上的指针以及它们在 javascript 中的表现感到困惑。

最佳答案

我只有非常基本的 Javascript 知识,因此我只会为您提供与您的代码等效的 C 代码,您可以更轻松地进行转换。

这里

pucSeqX = m_pucSeqX + m_iRounds1;
pucSeqM = m_pucSeqM + m_iRounds1;

m_pucSeqX 是一个指针值(可能是一个衰减数组),语句相当于

pucSeqX = &m_pucSeqX[m_iRounds1];
pucSeqM = &m_pucSeqM[m_iRounds1];

在接下来的 for 循环中,您将递减指针 pucSeqXpucSeqM,它们在循环开始时指向 m_iRounds1 - 分别是 m_pucSeqXm_pucSeqM 的索引元素,因此您可以递减索引并访问数组:

pucSeqX_ind = m_iRounds1;
pucSeqM_ind = m_iRounds1;

for (j = m_iRounds-1; j > 0; j--, pucSeqX_ind--, pucSeqM_ind--)
{
    if (m_pucSeqM[pucSeqM_ind] <= ucPlain)
        ucPlain -= m_pucSeqM[pucSeqM_ind];
    else {
        ucPlain += ~m_pucSeqM[pucSeqM_ind];
        ucPlain++;
    }

    ucPlain ^= m_pucSeqX[pucSeqX_ind];
}

HTH

关于javascript - C 指针相当于 JavaScript 中的登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339059/

相关文章:

javascript - 使用 != 和 not-in 查询会在 firestore 中使用 Query.where 抛出错误

node.js - 使用 AWS Lambda 检测浏览器版本

javascript - 前端 API token 暴露

javascript - 动态创建按钮的点击事件

javascript - rails : gon is not defined error

C - scanf 行为不当

c - 可加载的 Bash 内置

c - 为什么会打印 1?

javascript - 为什么 localhost 找不到bundle.js,即使它位于 public 目录中?

javascript - Nodejs 文件 deflate 未产生预期结果