很多朋友对于将64位bit转化为char ch[8]和八字节64位不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
本文目录
8位字长什么意思将64位bit转化为char ch[8]8位字长什么意思与8位字长对应的有16位,32位
在计算机里面,定义一个数据,是要指定长度的。
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位的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。