在短时间内替换多个位[关闭]

Posted

技术标签:

【中文标题】在短时间内替换多个位[关闭]【英文标题】:Replace multiple bits in a short [closed] 【发布时间】:2016-03-13 22:26:44 【问题描述】:

如何在 Java 中替换 short 中的多个位?

我正在研究一种加密算法,我需要执行以下操作: 我很短,需要应用一系列 4 位替换。 示例:如果前4位是0010,则替换为0110,如果是1111,则替换为1100,依此类推,后4位相同。

最好/最快的方法是什么?目前,我将 short 转换为 String 并使用 String 替换来完成,但它显然非常慢,在我看来这是绝对错误的方式。

【问题讨论】:

您认为正确的方法是什么?你是如何尝试实现它的,你遇到了什么问题?显示您的代码... 我投票决定将此问题作为题外话来结束,因为如果您在作业上需要帮助,您必须先自己努力。 【参考方案1】:

位算术,类似这样:

short s = 191;
short first = (short) (s & 0x000F);
short second = (short) ((s >> 4) & 0x000F);
short third = (short) ((s >> 8) & 0x000F);
short fourth = (short) ((s >> 12) & 0x000F);

call_the_method_to_convert_each();

s = fourth;
s = ((short) ((s << 4) | third));
s = ((short) ((s << 4) | second));
s = ((short) ((s << 4) | first));

【讨论】:

效果完全一样,谢谢!

以上是关于在短时间内替换多个位[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

再谈Vim substitute替换命令

从输入中计算多个结果并在标签 KIVY 中替换

替换多个文件中的多行长文本(notepad++ 或其他解决方案)

如何在 Powershell 中一次替换多个 .txt 文件中的数据?

同时替换多个值 - 为了将字符串转换为数字

lua语言如何替换多个字符并记录替换位置和替换内容