社区
C语言
帖子详情
急,请教一个位操作的问题
verymorose
2004-07-19 12:45:18
请问各位,望不吝赐教:
怎么用8个ASCII码组成的字符串,去掉每个ASCII字符最前边一位的0,(剩7位,一共7*8=56位)重新组成一个7字节长的字符串?
急,拜托了
...全文
168
9
打赏
收藏
急,请教一个位操作的问题
请问各位,望不吝赐教: 怎么用8个ASCII码组成的字符串,去掉每个ASCII字符最前边一位的0,(剩7位,一共7*8=56位)重新组成一个7字节长的字符串? 急,拜托了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TalosChen
2004-07-19
打赏
举报
回复
不好意思,一时疏忽。
不客气。
verymorose
2004-07-19
打赏
举报
回复
好像应该是bit[i]=tmp>>7
多谢了
verymorose
2004-07-19
打赏
举报
回复
main(){
char a='a';
char tmp;
int i;
unsigned char bit[8];
for(i=0;i<8;i++){
tmp=a<<i;
bit[i]=tmp>>8;
}
a='1';
for(i=0;i<8;i++){
a|=bit[i]<<(7-i);
}
printf("%c\n",a);
}
楼上的哥们,不好使阿,打印出来是一个乱字符
TalosChen
2004-07-19
打赏
举报
回复
char a='a';
unsigned char bit[8];
for(i=0;i<8;i++){
tmp=a<<i;
bit[i]=tmp>>8;
}
这是将a的八位从高到低依次放入bit[8]中,即bit[0]为最高位。
for(i=0;i<8;i++){
a|=bit[i]<<(7-i);
}
这是第二个例子
应该够清楚了吧
freefalcon
2004-07-19
打赏
举报
回复
void main()
{
char a[8] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
char b[7];
for(int i=0; i<7; i++)
b[i] = (a[i] << (i+1) ) | ( ((unsigned char)a[i+1]) >> (6-i) );
}
verymorose
2004-07-19
打赏
举报
回复
比如说如何把一个字符的八位拆开,把每一位写入一个字符变量
以及如何把8个由0和1组成字符,合起来写入一个字符变量
拜托了,就给上边两个例子好吗
verymorose
2004-07-19
打赏
举报
回复
我是新手,对位操作不熟悉阿,能不能给一点例子阿,多谢了
我不是做DES
TalosChen
2004-07-19
打赏
举报
回复
先用一个56位的数组,如 unsigned char bit[56] 将这56位用位运算符>>或<<写到这个数组里(一位对应数组中的一个元素),然后再依次将这已读出的56未写入最终的7字节字符串即可。具体做的时候,可以先将bit[56]七位一组,写一个循环依次处理要处理的八个字符。然后再八位一组,依次写入最终的字符串。
ps.你要做的是DES吗?
verymorose
2004-07-19
打赏
举报
回复
急啊,怎么没人回答,急死我了,拜托了
【工作总结】超市收银员年度工作总结模板.doc
【工作总结】超市收银员年度工作总结模板.doc
医生个人年终述职报告2021.docx
医生个人年终述职报告2021.docx
精品工作总结范文模板-2017年医院医生个人工作总结.docx
精品工作总结范文模板-2017年医院医生个人工作总结.docx
有关银行员工的述职报告锦集七篇.docx
有关银行员工的述职报告锦集七篇.docx
必备医生述职报告集锦五篇.docx
必备医生述职报告集锦五篇.docx
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章