1. 首页 > 星座知识 > 文章页面

将64位bit转化为char ch[8]

c语言编写函数,将一个字符串str中指定的字符ch删去,函数原型是void delchar char str,char ch

很多朋友对于将64位bit转化为char ch[8]和八字节64位不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

本文目录

8位字长什么意思将64位bit转化为char ch[8]8位字长什么意思

与8位字长对应的有16位,32位

c语言编写函数,将一个字符串str中指定的字符ch删去,函数原型是void delchar char str,char ch

在计算机里面,定义一个数据,是要指定长度的。

8位字长的数据,如果是无符号整形,则其范围就是0到255

将64位bit转化为char ch[8]

我觉得你这个算法有点问题,如果按照题目的要求,拆分出来的char应如下:

1,1,1,1,1,0,0,0

0,0,1,0,1,1,0,0

。。。

而按照你的逻辑,得到的结果却是正好相反的,ch[j/8]|=(bit[j]<<(j%8));一句的结果变成了

0,0,0,1,1,1,1,1

0,0,1,1,0,1,0,0

所以我觉得应该改成ch[j/8]|=(bit[j]<<(7-j%8));

另外你说的有乱码存在,原因很简单那就是转换成的char本身就是乱码,就好比char(-65)就是乱码,char的大小是从-128到 127,但不是所有的都有字符可以呈现,如果你改一下2禁止的值,把值控制在65(A)到 113(z),就可以看到值了。

按照你的新要求,我帮你把代码写出来了,你可以跑一边试一下,不懂得问就行了

#include<iostream>

#include<stdio.h>

using namespace std;

bool*ChangeToBit(char ch);

int main()

{

bool bit[128];

char ch[17]="dadb9bad423d6b85";

int i,j;

for(int i=0;i<16;i++)

{

bool*tmp= ChangeToBit(ch[i]);

for(j=0;j<8;j++)

{

bit[j+i*8]= tmp[j];

}

}

for(int i=0;i<128;i++)

{

cout<<bit[i];

if((i+1)%8== 0)

{

cout<<endl;

}

}

for(i=0;i<8;i++)

{

ch[i]=0;

}

for(j=0;j<128;j++)

{

ch[j/8]|=(bit[j]<<(7-j%8));

}

for(i=0;i<16;i++)

{

cout<<ch[i];

}

cout<<endl;

system("pause");

return 0;

}

bool* ChangeToBit(char ch)

{

int i= 0;

bool bit[8];

for(i=0;i<8;i++)

{

bit[7-i]= ch%2;

ch= ch>> 1;

}

return bit;

}

关于本次将64位bit转化为char ch[8]和八字节64位的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

windows系统mysql 8.0 64位安装教程 贼细

联系我们

Q Q:

微信号:

工作日:9:30-18:30,节假日休息

微信