如何进行这样的转换?把.####....变成011110000(150分)

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

kowity

Unregistered / Unconfirmed
GUEST, unregistred user!
我想这样做:
有个文件(input)的内容是
##.###...#.##..#
#.####.#...###.#
##.#...###..##.#
这样之类的符号,编程转换为:
1101110001011001
1011110100011101
1101000111001101
然后把这些2进制的数转为16进制,比如:1101110001011001-->DC59
然后把这些16进制写入另一个文件(output)。
output文件要以16进制写入,而不是用ascii码写入
请问那位高手可以叫我如何做,最好写出源代码。谢谢
 
//memo1.LoadFormFile
for i:=0 to Length(Memo1.text)-1 do
//begin
//if Memo1.Text='.' then Memo1.Text=
//else Memo1.Text=
//end;
 
我只想要输入文件input然后输出文件output,我不想再在界面上放memo
yzhshi说得不够详细
 
procedure TForm1.Button1Click(Sender: TObject);
var
InStrList,OutStrList: TStringList;
I,J: Integer;
Tmp: DWORD;
begin
InStrList:=TStringList.Create;
try
InStrList.LoadFromFile('Input.txt');
OutStrList:=TStringList.Create;;
try
for I:=0 to InStrList.Count-1 do
begin
Tmp:=0;
for J:=0 to Length(InStrList.Strings)-1 do
if Copy(InStrList.Strings,J+1,1) <> '.' then
Tmp:=Tmp or (1 shl (15-J));
OutStrList.Add(IntToHex(Tmp,4));
end;
OutStrList.SaveToFile('OutPut.txt');
finally
OutStrList.Free;
end;
finally
InStrList.Free;
end;
end;

还有文件是否存在等判断自己加就行了
 
老大,真是忍不住我想说几句。
>>不想在界面上放Memo,
这么幼稚的问题!!!!!一看便知前天刚刚装上delphi。
我请问您是从TC转来还是从TP转来?
如果从来没有写过程序可以去买一本入门书看看,
何必来这里浪费大家的时间?要别人给你写源代码?
不是不能,是太低级,增加自己的惰性。
你接受不接受批评?
 
procedure ByteToHex(d: Byte);
const
HEX: string = '0123456789ABCDEF';
var
b: Byte;
s: string;
i: Integer;
begin
s := '00';
b := d and $0F + 1;
i := 2;
s := HEX;
Dec(i);
b := (d and $F0) shr 4 + 1;
s := HEX;
ShowMessage(s);
end;

function StrToHex(str: string): WORD;
var
i: Integer;
d: WORD;
s: string;
begin
d := 0;
s := '0000000000000000';
for i := 1 to Length(str) do
begin
if str = '#' then
begin
if i <= 8 then
d := d or (1 shl (8 - i))
else
d := d or (1 shl (24 - i));
s := '1';
end;
end;
Result := d;
end;

procedure ZH(input, output: string);
var
i, fh: Integer;
d: WORD;
B: Byte;
begin
with TStringlist.Create do
begin
try
LoadFromFile(input);
fh := FileCreate(output);
try
if fh <> -1 then
begin
for i := 0 to Count - 1 do
begin
d := StrToHex(Strings);
FileWrite(fh, d, sizeof(WORD));
end;
FileSeek(fh, 0, 0);
for i := 1 to Count * 2 do
begin
B := 0;
FileRead(fh, B, sizeof(Byte));
ByteToHex(B);
end;
end;
finally
FileClose(fh);
end;
finally
Free;
end;
end;
end;
 
不是我懒得自己想,也不是我刚入门,我自己用流来试过,但是有一些错误。
我来这问问题就是为了把知识学的更好,把技术练得更熟
什么太低级,什么太幼稚,那么我问你,放memo上去有根本作用吗?
难道来这都要问一些超级超级高级的问题才可以吗?
我说的是"最好写出源代码",有说过要你写完整的源代码给我吗?
如果你能简单说说关键部分的算法也是可以的呀!
为什么别人就行,你自己想不到的话就不要说!
 
多人接受答案了。
 
后退
顶部