奇怪的简单的问题!(100分)

  • 主题发起人 主题发起人 ranyang
  • 开始时间 开始时间
R

ranyang

Unregistered / Unconfirmed
GUEST, unregistred user!
我想处理把一串字符转化为utf7编码!规则是:
utf7
用于处理普通 ASCII 字符 , 主要普通 ASCII 的二进制编码最高位一般为 0. 在 UTF7 下处理 ASCII 字符的时候需要处理补位 . 补位规则 : 将后一字节的从尾取位补在前一字节的头 , 补满 8 位
图片见:
http://www.suiyuanwu.com/wwwliaole/article/eWebEditor/UploadFile/2004114101311370.jpg
现在的问题是:
我打算把: Hello!
转化为〉16进制〉2进制〉。。。转化。。。〉16进制〉取出来就可以了
我用listbox作容器,但是在转化到16进制为2进制时。
我用
//16进制转2进制
function Tform1.HexToBin(sHex: string):string;
var
sHexBuf: array [0..65535] of Char;
i, nLen: Integer;
sResult: string;
begin
sHex := UpperCase(sHex);
for i := 0 to 65535 do
begin
sHexBuf := #0;
end;
StrPCopy(sHexBuf, sHex);
nLen := Length(sHex);
sResult := '';
for i := 0 to nLen - 1 do
begin
case sHexBuf of
'0': sResult := sResult + '0000';
'1': sResult := sResult + '0001';
'2': sResult := sResult + '0010';
'3': sResult := sResult + '0011';
'4': sResult := sResult + '0100';
'5': sResult := sResult + '0101';
'6': sResult := sResult + '0110';
'7': sResult := sResult + '0111';
'8': sResult := sResult + '1000';
'9': sResult := sResult + '1001';
'A': sResult := sResult + '1010';
'B': sResult := sResult + '1011';
'C': sResult := sResult + '1100';
'D': sResult := sResult + '1101';
'E': sResult := sResult + '1110';
'F': sResult := sResult + '1111';
else
break;
end;//end case
end;
while Pos('0', sResult) = 1 do
Delete(sResult, 1, 1);
Result := sResult;
end;
~~~~~~~~~~~~~~~
listbox1.Clear;
listbox2.Clear;
t:= WideString(Edit1.Text);
for i:=1 to Length(t) do
begin
listbox1.Items.Add(inttoHex(Word(t),2));
end;
for J := 0 to listbox1.Count-1 do // Iterate
begin
listbox2.item.add(HexToBin(listbox1.Items[J]));
end; // for
。。。。。

我不知道怎么搞呢!
报错我解决了,是我的hextobin函数有问题,已经改好了!!!
但是这个转化函数怎么写呢?
 
HexToBin函数的参数不对
 
现在的问题基本已经解决!我想找一个二进制转为16进制的函数。有谁帮帮?!
 
倒过来分析:
从右往左数,每四个字符变成一个十六进制字符就可以了
 
是啊 ZhouSL说的对,很简单的
 
其实是简单的!我自己搞定了!!!
 
后退
顶部