我正在开发一个我所拥有的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;
}
答案 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);