当前位置: 首页 > 知识库问答 >
问题:

破译某些文本的最有效方法

呼延鸿畅
2023-03-14

我正在开发一个小应用程序,例如,我得到了一些字符串“MRUGDQ”和一个移位值3。然后我将每个字母向左移动3,结果是“JORDAN”。例如,M将被J取代,R将被O取代,依此类推。

所以现在这就是我想使用的方法,但我想知道这是否有效,我可以改进我的解决方案吗?

我所做的假设:
我假设我的字符串将是大写A到Z字母或小写A到Z字母,因此ascii范围分别为65到90和97到122。

Pesudo代码

>

  • 获取字符的ascii值(假设字符恰好位于大写字母范围之间)
  • 将移位值添加到char ascii值

    if new ascii value <= 90
        replace old letter by new letter
    else
        int diff = new ascii value - 90
        while (new ascii value <= 90) {
            decrement diff value by 1
            increment new ascii value by 1
        }
        add remaining diff to 65 and set that as new ascii value
    replace old letter by new letter
    

    请让我知道我的方法是否正确,或者我是否可以更有效。

  • 共有1个答案

    简宏义
    2023-03-14

    我看不出有什么需要改进的地方,只是您对新字符的处理超出了范围。如果要将重叠量“滚动”回范围的开始处,则只需计算:(x%90)64(*)(在添加移位值后,x是ascii值)。

    例子:

    'Y' (89) + 3 = '\' 92
    92 % 90 = 2
    2 + 64 = 'B' (66)
    

    您需要从64开始,以避免跳过值为65的'A'

    (*)一般公式为:(值%上限)(下限-1)。您还可以使用(值%上限1)下限。

     类似资料:
    • 我是一个机器人初学者。我陷入了一个问题。我有三,我需要对它们进行验证。当我进行验证时,即使我在运行应用程序时没有输入任何值,EditText 也有一个值。为了检查哪个值是否存在,我使用 打印了这些值。 这是打印在日志中 这些价值观从何而来?请帮我解决这个问题。 提前感谢:)

    • 问题内容: 我需要从超过2GB的文件中更新最后一行,这些文件由无法读取的文本行组成。目前,它可以通过逐行循环工作。但是,我想知道是否有任何编译的库可以更有效地实现这一目标?谢谢! 目前的方法 问题答案: 更新:使用ShadowRanger的答案。它更短且更健壮。 对于后代: 读取文件的最后N个字节,然后向后搜索换行符。

    • 问题内容: 将File写入javax.servlet.ServletOutputStream的最有效方法是什么? 编辑: 如果使用NIO会更有效吗? 问题答案: 哪里是的FileInputStream和是。 IOUtils是Apache Commons中 Commons IO 模块的实用程序。

    • 我想破译基于频率分析的文本,编程不是问题,但有一些数学困难。 (别担心,不是为了黑客攻击,我想试试十二宫杀手340密码,但问题只是关于破译http://zodiackillerciphers.com/wiki/images/7/7d/340-cipher-hi-resolution.jpg的一般问题,而不是密码的其他问题。) 我已经把它分解为5个简短的问题,都与成本函数有关,以表明我的努力,简短的

    • 我有一个包含多个属性的属性文件。多个对多个(我们的)产品有效,有些只对一个产品有效(不能通过属性名称区分)。因此,在一个产品基于ANT的构建过程中,我想将包含所有属性的原始文件复制到产品特定文件中,跳过适用于其他产品的部分。我可以想象使用一些开始和结束标记,例如。 对于产品 1,我想获取文件 和产品2 ANT是否可能实现这样的事情,或者我应该编写自己的Java帮助程序类?

    • 问题内容: 我很好奇,最有效的方法是读取文本文件(不必担心大小,它很小也可以),然后将其内容转储到一个供显示的文件中。 例如,我可以以某种方式在单个字符串中使用整个文件,然后使用它来显示它吗?还是应该逐行或字节读取数组,然后将它们填充到StringBuffer中,然后将其设置为文本区域? 谢谢 问题答案: 您可以使用并将其传递给。只是这样做: Java 7- 尝试资源块 Java 6- 最后尝试块