c++中如何将一个十六进制串付给一个char字符数组?(20分)

  • 主题发起人 主题发起人 kmwap
  • 开始时间 开始时间
K

kmwap

Unregistered / Unconfirmed
GUEST, unregistred user!
如这样一个串
0x60x50x40x150x81000605041582158264F00000480
和这样一个数组
char str(100)
 
move 不可以吗
 
前面 5 个是转义字符,后面不是。
是这样吗??????????
 
kmwap你的问题不清楚,能具体一点吗,是将十六进制的这些字符赋给char数组,
那不是很简单。如果是将它代表的数赋给数组,转换一下不就行了吗?
 
0605041582158264F00000480E0100000000000000000000000000000000000000000000000000000000000023C7BC00000000000021289200000000000031281200000000000051C812000000000000512812000000000000792812000000000000492892000000000000CFC73C000000000000000000000000000000000000
这个十六进制串怎么转成字符?
 
我并不知你要解这个码的意途如何,你可按ASCII将此串分解,然后转换成字符。
也许你的码是经过一些算法才得到的,所以这个我也无能为力。
 
这有困难吗,是不是每两位表示一个字符,不考虑中文字符的问题。
 
不就是将所有的0x删除后每两数字一个字符吗
 
是啊,怎么转为二进制后再付给数组char x[1000]???
 
{HexToCard:
将一个十六进制的串转化为一个Cardinal
}
function HexToCard(sHex:string):Cardinal;
var
iLen:Integer;
it:Integer;
by:Byte;
begin
if AnsiContainsText(sHex,'0x') then
sHex:=Copy(sHex,3,8);
Result:=0;
iLen:=Length(sHex);
for it:=1 to iLendo
begin
Result := Result shl 4;
by:=Byte(sHex[it]);
case by of
ASCII_0..ASCII_0+9: Inc(Result,by-ASCII_0);
ASCII_CA..ASCII_CA+5 : Inc(Result,by-ASCII_CA+10);
ASCII_A..ASCII_A+5 : Inc(Result,by-ASCII_A+10);
else
Raise Exception.Create(Format(rsErrorParam,[]));
end;
end;
end;

void xxx()
{
AnsiString sSrc='0x60x50x40x150x81000605041582158264F00000480';
sSrc=AnsiReplaceText(sSrc,'0x','');
char aArr[1000] ;
for(int i=0;i<Length(sSrc);i+=2)
{
ansistring sTemp=Copy(sSrc,i,2);
int i= HexToCard(sTemp);
aArr[i/2]=i;
}
}
C++Builder的语法不太记得了,HexToCard是用delphi写的,但意思应该明白了
 
char x[1000]={"0x60x50x40x150x81000605041582158264F00000480
"};
for (int i=0;i<1000;i++)
printf("%d",x);//十进制输出
 
后退
顶部