将base 4代码转换为字母

时间:2017-08-18 16:46:50

标签: c

我正在开发一个我所拥有的assmebler项目,我需要将二进制机器代码翻译成一个"奇怪的"例如4个基本代码 如果我得到这样的二进制代码" 0000-10-01-00"我应该把它翻译成" aacba"

00 =一个

01 = B

10 = C

11 = d

我设法将代码翻译成4个基本代码,但我不知道如何从那里继续,或者如果这是正确的方法,...

添加我的代码

void intToBase4 (unsigned int *num)
{
  int d[7];
  int j,i=0;
  double x=0;
  while((*num)>0)
  {
    d[i]=(*num)%4;
    i++;
    (*num)=(*num)/4;
  }
  for(x=0,j=i-1; j>=0; j--)
  {
    x += d[j]*pow(10,j);
  }
  (*num)=(unsigned int)x;
}

2 个答案:

答案 0 :(得分:0)

我已经包含了一个32位到数字到字母的转换器,供您掌握基础知识。它可以使用一个32位的数字"一次。您可以将此作为基于数组的解决方案的基础,就像您在示例中完成了一半,或者将类型更改为更大或类似。它应该向您展示您需要做的事情:

void intToBase4 (uint32_t num, char *outString)
{
  // There are 16 digits per num in this example
  for(int i=0; i<16; i++)
  { 
    // Grab the lowest 2 bits and convert to a letter.
    *outString++ = (num & 0x03) + 'a';

    // Shift next 2 bits low
    num >>= 2;
  }
  // NUL terminate string.
  *outString = '\0';
}

答案 1 :(得分:0)

更普遍的一个: 用法: value - 要解码的值,buff - buff将存储结果字符串,numofwrds - 要解码的字段数,...字段大小(位)

示例&#34; xxxxyyvvzz&#34;: - 4位,2位,2位,2位

@Query("select t from Test t join User u where u.username = :username")
List<Test> findAllByUsername(@Param("username")String username);
decode(v, buff, 4, 4, 2, 2, 2);