高分求助,,,关于对字符串按高低位取值的问题????(在线等待) 例如:a[10]; 怎样才能按如下循序取:a[1]的高4位,a[1]的低4位,a[1]的高4位,a[2]的低4位..............a[9]的高4位,a[9]的高4位。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 取高位时用a[1]&11110000,取低位时用a[1]&00001111 你上面的描述没有规律呀:(是不是这样:a[i]高->a[i]低(i:0~9)BYTE hMask = 0xF0;BYTE lMask = 0x0F;for(int i=0; i<10; i++){ BYTE high low; high = a[0] & hMask; high>>=4; low = a[0] & lMask;} 错了:是这样 怎样才能按如下循序取:a[1]的高4位,a[1]的低4位,a[2]的高4位,a[2]的低4位,a[3]的高4位,a[3]的低4..............a[9]的高4位,a[9]的高4位。 高4位 a[i] >> 4 低4位 a[i] & 0x0F 低4位 a[i] & 0xF0 int ret;int mask = 0x000000F0;for( int i = 0; i < 4; i++ ){ ret = a[i/2]&(mask>>(4*(i%2)));} int a[10] = {...};int ret;int mask = 0x000000F0;for( int i = 0; i < 20i++ ){ ret = a[i/2]&(mask>>(4*(i%2)));} 哪有规律呀?是这样的吗?(要取的用*表示,要留的用-表示)a[1] ****----a[1] ----****a[2] ****----a[2] ----****a[3] ****----a[3] ----****a[4] ****----a[4] ----****a[5] ****----a[5] ----****a[6] ****----a[6] ----****a[7] ****----a[7] ----****a[8] ****----a[8] ----****a[9] ****----a[9] ****---- 我需要做把a[10]中的数据拆开,放到另外的数组b[20]中,格式是:a[0]高4位放到b[0]中,a[0]低4位放到b[1]中,a[1]高4位放到b[2]中,a[1]低4位放到b[3]中, . . . . . . . .a[9]高4位放到b[18]中,a[9]低4位放到b[19]中。 b[0] = (a[0]&0xF0)>>4;b[1] = a[0]&0xOF;......b[18] = (a[9]&0xF0)>>4;b[19] = a[9]&0xOF; BYTE a[10] = {...};BYTE b[20];int ret;int mask = 0x0000000F;for( int i = 0; i < 20i++ ){ b[i] = (a[i/2]>>(4*(i%2)))&mask;} BYTE a[10] = {...};BYTE b[20];int ret;int mask = 0x0000000F;for( int i = 0; i < 20i++ ){ b[i] = (a[i/2]>>(4*((i+1)%2)))&mask;} 你要写一个十六进制的编辑器吗?Hankuu() 写的代码可读性太差,我看连你自己都快糊涂了 :-)....没必要那么复杂的。 谢谢,Hankuu() !!to dou_ya(豆芽菜) : 能不能给各简单的,我也喜欢比较简单的。 一个基于对话框的空工程,在对话框之间切换时内存每次都增加,最后内存泄露 OpenGL中的阴影效果实现 opengl效果怎样导出tga序列? 响应回车,组合框获得焦点好像有问题,和EDIT不一样 如何继承一个CTypedPtrList类? 怎么用普通的Socket直接读取HTTPS网页? 哎呀!各位大哥!小弟在vc中作了mark,却不知如何去掉? 问大侠一个有点无聊的技术问题 如何得到滚动条的指针?? 请问C++,VC++,C++ BUILDER他们有什么不同? socket的send和recv出错 请问VC中如何修改一个表的结构?
是不是这样:
a[i]高->a[i]低(i:0~9)BYTE hMask = 0xF0;
BYTE lMask = 0x0F;
for(int i=0; i<10; i++)
{
BYTE high low;
high = a[0] & hMask;
high>>=4;
low = a[0] & lMask;
}
怎样才能按如下循序取:a[1]的高4位,a[1]的低4位,a[2]的高4位,a[2]的低4位,a[3]的高4位,a[3]的低4..............a[9]的高4位,a[9]的高4位。
低4位 a[i] & 0x0F
int mask = 0x000000F0;
for( int i = 0; i < 4; i++ )
{
ret = a[i/2]&(mask>>(4*(i%2)));
}
int ret;
int mask = 0x000000F0;
for( int i = 0; i < 20i++ )
{
ret = a[i/2]&(mask>>(4*(i%2)));
}
(要取的用*表示,要留的用-表示)
a[1] ****----
a[1] ----****
a[2] ****----
a[2] ----****
a[3] ****----
a[3] ----****
a[4] ****----
a[4] ----****
a[5] ****----
a[5] ----****
a[6] ****----
a[6] ----****
a[7] ****----
a[7] ----****
a[8] ****----
a[8] ----****
a[9] ****----
a[9] ****----
a[0]高4位放到b[0]中,
a[0]低4位放到b[1]中,
a[1]高4位放到b[2]中,
a[1]低4位放到b[3]中,
. .
. .
. .
. .
a[9]高4位放到b[18]中,
a[9]低4位放到b[19]中。
b[1] = a[0]&0xOF;
......
b[18] = (a[9]&0xF0)>>4;
b[19] = a[9]&0xOF;
BYTE b[20];
int ret;
int mask = 0x0000000F;
for( int i = 0; i < 20i++ )
{ b[i] = (a[i/2]>>(4*(i%2)))&mask;
}
BYTE b[20];
int ret;
int mask = 0x0000000F;
for( int i = 0; i < 20i++ )
{ b[i] = (a[i/2]>>(4*((i+1)%2)))&mask;
}
没必要那么复杂的。
to dou_ya(豆芽菜) :
能不能给各简单的,我也喜欢比较简单的。