哪位大虾帮忙改一下,小弟编了一个转换程序,可是错误多。

具体内容是把byte数组转化成string数组,要求就是0x00的变成2位0,0,0x1f,变成1,f。
下面是 代码
#include<iostream>
#include<string>

using namespace std;
typedef unsigned char byte;

void convert(byte a[9],string b[18])
{
int i;
for(i=0;i<9;i++)
{

switch(a[i]|0xf0)
{
case 0xf0: b[2i+1]=0;break;
case 0xf1: b[2i+1]=1;break;
case 0xf2: b[2i+1]=2;break;
case 0xf3: b[2i+1]=3;break;
case 0xf4: b[2i+1]=4;break;
case 0xf5: b[2i+1]=5;break;
case 0xf6: b[2i+1]=6;break;
case 0xf7: b[2i+1]=7;break;
case 0xf8: b[2i+1]=8;break;
case 0xf9: b[2iv1]=9;break;
case 0xfa: b[2i+1]=a;break;
case 0xfb: b[2i+1]=b;break;
case 0xfc: b[2i+1]=c;break;
case 0xfd: b[2i+1]=d;break;
case 0xfe: b[2i+1]=e;break;
case 0xff: b[2i+1]=f;break;
}

switch(a[i])
{

case a[i]|0x0f=0x0f: b[2i+2]=0;break;
case a[i]|0x0f=0x1f: b[2i+2]=1;break;
case a[i]|0x0f=0x2f: b[2i+2]=2;break;
case a[i]|0x0f=0x3f: b[2i+2]=3;break;
case a[i]|0x0f=0x4f: b[2i+2]=4;break;
case a[i]|0x0f=0x5f: b[2i+2]=5;break;
case a[i]|0x0f=0x6f: b[2i+2]=6;break;
case a[i]|0x0f=0x7f: b[2i+2]=7;break;
case a[i]|0x0f=0x8f: b[2i+2]=8;break;
case a[i]|0x0f=0x9f: b[2i+2]=9;break;
case a[i]|0x0f=0xaf: b[2i+2]=a;break;
case a[i]|0x0f=0xbf: b[2i+2]=b;break;
case a[i]|0x0f=0xcf: b[2i+2]=c;break;
case a[i]|0x0f=0xdf: b[2i+2]=d;break;
case a[i]|0x0f=0xef: b[2i+2]=e;break;
case a[i]|0x0f=0xff: b[2i+2]=f;break;

}

}
}
void main()
{
byte a[9]={0x00,0xf0,0x0a,0xff,0x00,0x00,0x00,0x00,0x00};
string b[18];
convert(a,b);
cout<<b;
}

第1个回答  推荐于2016-03-13
修改好了,你自己对对吧

#include<iostream>
#include<string>
using namespace std;
typedef unsigned char byte;

void convert(byte a[9],char b[18])
{
int i;
for(i=0;i<9;i++)
{
switch(a[i]|0x0f)
{
case 0x0f: b[2*i]='0';break;
case 0x1f: b[2*i]='1';break;
case 0x2f: b[2*i]='2';break;
case 0x3f: b[2*i]='3';break;
case 0x4f: b[2*i]='4';break;
case 0x5f: b[2*i]='5';break;
case 0x6f: b[2*i]='6';break;
case 0x7f: b[2*i]='7';break;
case 0x8f: b[2*i]='8';break;
case 0x9f: b[2*i]='9';break;
case 0xaf: b[2*i]='a';break;
case 0xbf: b[2*i]='b';break;
case 0xcf: b[2*i]='c';break;
case 0xdf: b[2*i]='d';break;
case 0xef: b[2*i]='e';break;
case 0xff: b[2*i]='f';break;
}
switch(a[i]|0xf0)
{
case 0xf0: b[2*i+1]='0';break;
case 0xf1: b[2*i+1]='1';break;
case 0xf2: b[2*i+1]='2';break;
case 0xf3: b[2*i+1]='3';break;
case 0xf4: b[2*i+1]='4';break;
case 0xf5: b[2*i+1]='5';break;
case 0xf6: b[2*i+1]='6';break;
case 0xf7: b[2*i+1]='7';break;
case 0xf8: b[2*i+1]='8';break;
case 0xf9: b[2*i+1]='9';break;
case 0xfa: b[2*i+1]='a';break;
case 0xfb: b[2*i+1]='b';break;
case 0xfc: b[2*i+1]='c';break;
case 0xfd: b[2*i+1]='d';break;
case 0xfe: b[2*i+1]='e';break;
case 0xff: b[2*i+1]='f';break;
}
}
}
void main()
{
byte a[9]={0x00,0xf0,0x0a,0xff,0x00,0x00,0x00,0x00,0x00};
char b[19]={0};
convert(a,b);
cout<<b;
}本回答被提问者采纳
第2个回答  2008-07-24
不用那么麻烦这样就行

#include<iostream> 
#include<string> 

using namespace std; 
typedef unsigned char byte; 

void convert(byte a[9],string b[18]) 

    int i; 
    for(i=0;i<9;i++) 
    { 
        b[2*i] = (a[i] >> 4) & 0x0f;
        b[2*i + 1] = a[i] & 0x0f
    } 


void main() 

    byte a[9]={0x00,0xf0,0x0a,0xff,0x00,0x00,0x00,0x00,0x00}; 
    string b[18]; 
    convert(a,b); 
    cout<<b; 
}
第3个回答  2008-07-24
用不了那么麻烦
#include<iostream.h>
void main()
{
char aX[5]="0x00";
cout <<aX[0] <<aX[1] <<aX[2] << aX[3]<<endl;
return;
}
aX[2]和aX[3]的值就是你要的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网