两组ASCII字符之间的映射

两组ASCII字符之间的映射,c,binary,C,Binary,我们只需使用按位操作即可完成此操作。任何暗示都将不胜感激。刚开始学c 输入: abcdefghijklmnopqrstuvwxyz 输出: hpxdlt | aiqyemu}bjrzfnv~cks 这是我们被要求遵循的代码存根 #include <stdio.h> int main(void) { int inChar, outChar; while ((inChar = getchar()) != EOF) { // Your bitwise code appears here

我们只需使用按位操作即可完成此操作。任何暗示都将不胜感激。刚开始学c

输入: abcdefghijklmnopqrstuvwxyz 输出: hpxdlt | aiqyemu}bjrzfnv~cks

这是我们被要求遵循的代码存根

#include <stdio.h>
int main(void)
{
int inChar, outChar;
while ((inChar = getchar()) != EOF)
{
  // Your bitwise code appears here…

  // last instruction in while loop
  putchar(outChar);
}
return 0;
}
#包括
内部主(空)
{
int inChar,outChar;
而((inChar=getchar())!=EOF)
{
//您的按位代码出现在此处…
//while循环中的最后一条指令
putchar(outChar);
}
返回0;
}
函数getchar()返回一个 表示标准输入中ASCII编码字符的整数。putchar()函数将指定的整数转换为相应的ASCII字符,并将其发布到c中的标准输出。我相信你可以用c语言为它派生并行代码

    static void Main(string[] args)
    {
        using (StreamReader sr = new StreamReader(@"<input_file>"))
        {
            StringBuilder input = new StringBuilder();
            StringBuilder output = new StringBuilder();

            while (sr.Peek() >= 0)
            {
                var charFromFile = sr.Read();
                input.Append((char)charFromFile);

                var isFirstBitset = IsBitSet(charFromFile, 0);
                var isSecondBitset = IsBitSet(charFromFile, 1);
                var isFourthBitset = IsBitSet(charFromFile, 3);
                var isFifthBitset = IsBitSet(charFromFile, 4);

                // If first bit is set
                if (isFirstBitset)
                {
                    charFromFile = SetBit(charFromFile, 3);
                    if (!isFourthBitset)
                        charFromFile = ClearBit(charFromFile, 0);
                }

                // If 2nd bit is set
                if (isSecondBitset)
                {
                    charFromFile = SetBit(charFromFile, 4);
                    if (!isFifthBitset)
                        charFromFile = ClearBit(charFromFile, 1);
                }

                // if 4th bit is set
                if (isFourthBitset)
                {
                    charFromFile = SetBit(charFromFile, 0);
                    if (!isFirstBitset)
                        charFromFile = ClearBit(charFromFile, 3);
                }

                // if 5th bit is set
                if (isFifthBitset)
                {
                    charFromFile = SetBit(charFromFile, 1);
                    if (!isSecondBitset)
                        charFromFile = ClearBit(charFromFile, 4);
                }

                output.Append((char)charFromFile);
            }

            Console.WriteLine("Input = {0}", input.ToString());
            Console.WriteLine("Output = {0}", output.ToString());
        }

    }

    public static bool IsBitSet(int b, int pos)
    {
        return (b & (1 << pos)) != 0;
    }

    public static int SetBit(int value, int bitToSet)
    {
        return value | (int)Math.Pow(2, bitToSet);
    }

    public static int ClearBit(int value, int bitToClear)
    {
        return (value & ~((int)Math.Pow(2, bitToClear)));
    }
static void Main(字符串[]args)
{
使用(StreamReader sr=newstreamreader(@“”)
{
StringBuilder输入=新建StringBuilder();
StringBuilder输出=新的StringBuilder();
而(sr.Peek()>=0)
{
var charFromFile=sr.Read();
input.Append((char)charFromFile);
var isFirstBitset=IsBitSet(charFromFile,0);
var isSecondBitset=IsBitSet(charFromFile,1);
var isFourthBitset=IsBitSet(charFromFile,3);
var isFifthBitset=IsBitSet(charFromFile,4);
//如果设置了第一位
if(isFirstBitset)
{
charFromFile=SetBit(charFromFile,3);
如果(!isFourthBitset)
charFromFile=ClearBit(charFromFile,0);
}
//如果设置了第二位
如果(isSecondBitset)
{
charFromFile=SetBit(charFromFile,4);
如果(!isFifthBitset)
charFromFile=ClearBit(charFromFile,1);
}
//如果设置了第4位
如果(是第四位集)
{
charFromFile=SetBit(charFromFile,0);
如果(!isFirstBitset)
charFromFile=ClearBit(charFromFile,3);
}
//如果设置了第5位
如果(isFifthBitset)
{
charFromFile=SetBit(charFromFile,1);
如果(!isSecondBitset)
charFromFile=ClearBit(charFromFile,4);
}
Append((char)charFromFile);
}
WriteLine(“Input={0}”,Input.ToString());
WriteLine(“Output={0}”,Output.ToString());
}
}
公共静态布尔IsBitSet(int b,int pos)
{
返回(b&(1
#包括
#包括
布尔IsBitSet(整数b,整数位置)
{​​​​​​

返回(b&d)(1)请不要滥发语言标签。欢迎使用SO。我们将帮助您解决问题,但我们不会为您编写。这个问题并没有代表提问者显示出足够的努力。我不知道从何处开始以二进制形式写出每个集合的前几个字符的数字,并查找模式。查看相应的pa二进制字符的irs。确定每对二进制数中保持不变的部分,以及发生变化的部分。查看发生变化的部分,并找出如何实现。问题是用C实现,而不是C#我知道。我想通过C#提供解决方案逻辑。我想推导逻辑并用C#实现不会有什么大不了的我猜你可以在互联网上查找设置、清除和检查位状态的代码,并在适当的位置使用它。就是这样!查看C语言的解决方案。
#include <stdio.h>
#include <math.h>

 bool IsBitSet(int b, int pos)
 {​​​​​​
      return (b & (1 << pos)) != 0;
 }​​​​​​

 int SetBit(int value, int bitToSet)
 {​​​​​​
     return value | (int)pow(2, bitToSet);
 }​​​​​​

 int ClearBit(int value, int bitToClear)
 {​​​​​​
     return (value & ~((int)pow(2, bitToClear)));
 }​​​​​​

  int main(void)
  {​​​​​​
     unsigned char inChar= 0, outChar=0;
while ((inChar = getchar()) != EOF)
{​​​​​​
    // Your bitwise code appears here…
    char isFirstBitset = IsBitSet(inChar, 0);
    char isSecondBitset = IsBitSet(inChar, 1);
    char isFourthBitset = IsBitSet(inChar, 3);
    char isFifthBitset = IsBitSet(inChar, 4);

    // If first bit is set
    if (isFirstBitset)
    {​​​​​​
        inChar = SetBit(inChar, 3);
        if (!isFourthBitset)
            inChar = ClearBit(inChar, 0);
    }​​​​​​

    // If 2nd bit is set
    if (isSecondBitset)
    {​​​​​​
        inChar = SetBit(inChar, 4);
        if (!isFifthBitset)
            inChar = ClearBit(inChar, 1);
    }​​​​​​

    // if 4th bit is set
    if (isFourthBitset)
    {​​​​​​
        inChar = SetBit(inChar, 0);
        if (!isFirstBitset)
            inChar = ClearBit(inChar, 3);
    }​​​​​​

    // if 5th bit is set
    if (isFifthBitset)
    {​​​​​​
        inChar = SetBit(inChar, 1);
        if (!isSecondBitset)
            inChar = ClearBit(inChar, 4);
    }​​​​​​

    outChar = inChar;
    putchar(outChar);
}​​​​​​
return 0;
 }​​​​​​