delphi十进制转十六进制
delphi十进制转十六进制,将一个数组中的数转换为十六进制数并写入文本文件中。写入时要求在十六进制数前面加Ox,数字部分不足四位的前面补0,例如Ox001A。快的继续加...
delphi十进制转十六进制,将一个数组中的数转换为十六进制数并写入文本文件中。
写入时要求在十六进制数前面加Ox,数字部分不足四位的前面补0,例如Ox001A。
快的继续加分 展开
写入时要求在十六进制数前面加Ox,数字部分不足四位的前面补0,例如Ox001A。
快的继续加分 展开
4个回答
展开全部
procedure TForm1.CreateRandomArray(var Arr: TIntArray; Count: Integer);
var
I: Integer;
begin
Randomize;
SetLength(Arr, Count);
for I := 0 to Count - 1 do
Arr[I] := Random(65536);
end;
//参数Arr:要输出的数组
//CountPerLine:每行几个数字,1~16之间
//List: 输出到该字符串列表
procedure TForm1.FormatArray(const Arr: TIntArray; CountPerLine: Integer;
List: TStrings);
var
I, Count: Integer;
Idx, NextIdx: Integer;
line: string;
begin
Count := Length(Arr);
if CountPerLine < 1 then
CountPerLine := 1
else if CountPerLine > 16 then
CountPerLine := 16;
Idx := 0;
while Idx < Count do
begin
NextIdx := Idx + CountPerLine;
if NextIdx > Count then
NextIdx := Count;
line := '';
for I := Idx to NextIdx - 1 do
begin
line := line + ' 0x' + IntToHex(Arr[I], 4);
end;
List.Add(line);
Idx := NextIdx;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Arr: TIntArray;
List: TStringList;
begin
CreateRandomArray(Arr, 256);
List := TStringList.Create;
try
FormatArray(Arr, 8, List);
Memo1.Lines.AddStrings(List);
//如果要保存到文件,就这样
//List.SaveToFile(FileName);
finally
List.Free;
end;
end;
var
I: Integer;
begin
Randomize;
SetLength(Arr, Count);
for I := 0 to Count - 1 do
Arr[I] := Random(65536);
end;
//参数Arr:要输出的数组
//CountPerLine:每行几个数字,1~16之间
//List: 输出到该字符串列表
procedure TForm1.FormatArray(const Arr: TIntArray; CountPerLine: Integer;
List: TStrings);
var
I, Count: Integer;
Idx, NextIdx: Integer;
line: string;
begin
Count := Length(Arr);
if CountPerLine < 1 then
CountPerLine := 1
else if CountPerLine > 16 then
CountPerLine := 16;
Idx := 0;
while Idx < Count do
begin
NextIdx := Idx + CountPerLine;
if NextIdx > Count then
NextIdx := Count;
line := '';
for I := Idx to NextIdx - 1 do
begin
line := line + ' 0x' + IntToHex(Arr[I], 4);
end;
List.Add(line);
Idx := NextIdx;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Arr: TIntArray;
List: TStringList;
begin
CreateRandomArray(Arr, 256);
List := TStringList.Create;
try
FormatArray(Arr, 8, List);
Memo1.Lines.AddStrings(List);
//如果要保存到文件,就这样
//List.SaveToFile(FileName);
finally
List.Free;
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
// 函数 讲byte数组写入文本
procedure WriteArrToTxt(const filename: string; pBuff: PByteArray; bufflen: Integer);
var
i: Integer;
str: string;
b: Byte;
begin
for i:= 0 to bufflen - 1 do
begin
b := pbuff^[i];
str := str + Format('0x%.4x', [b]) + ' ';
end;
with TStringList.Create do
begin
Text := str;
SaveToFile(filename);
Free;
end;
end;
// 调用测试
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
p: array [0..99] of Byte;
begin
WriteArrToTxt('c:\12344.txt', @p, 100);
end;
procedure WriteArrToTxt(const filename: string; pBuff: PByteArray; bufflen: Integer);
var
i: Integer;
str: string;
b: Byte;
begin
for i:= 0 to bufflen - 1 do
begin
b := pbuff^[i];
str := str + Format('0x%.4x', [b]) + ' ';
end;
with TStringList.Create do
begin
Text := str;
SaveToFile(filename);
Free;
end;
end;
// 调用测试
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
p: array [0..99] of Byte;
begin
WriteArrToTxt('c:\12344.txt', @p, 100);
end;
追问
数组那我想弄成256个0-65535的随机数应该怎么弄?
我想用逗号隔开,,每行显示八条数据。。应该怎么写呢。?
还有。。你这个好像写入新的内容会把原来的覆盖掉?
追答
// 函数 讲byte数组写入文本
procedure WriteArrToTxt(const filename: string; pBuff: PWordArray; bufflen: Integer);
var
i: Integer;
str: string;
b: Word;
begin
for i:= 0 to bufflen - 1 do
begin
b := pbuff^[i];
str := str + Format('0x%.4x', [b]) + ',';
if (i + 1) mod 8 = 0 then
str := str + #13#10;
end;
with TStringList.Create do
begin
if FileExists(filename) then
LoadFromFile(filename);
Text := Text + str;
SaveToFile(filename);
Free;
end;
end;
// 调用测试
procedure TForm1.Button1Click(Sender: TObject);
var
p: array [0..255] of Word;
i: Integer;
begin
for i:= 0 to 255 do
begin
// 256 个 65535范围的随机值
Randomize;
p[i] := Random($FFFF);
end;
WriteArrToTxt('c:\12344.txt', @p, 256);
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
放一个button 一个edit
procedure TForm1.btn1Click(Sender: TObject);
var i:Integer;
jinzhi16 : string ;
begin
i:=strtoint('$'+(edt1.text)); //加'$'后,原本的字符串就成了16进制数
jinzhi16 :=IntToStr(i);
while(length(jinzhi16)<4)do
begin
jinzhi16 :='0'+jinzhi16;
end;
jinzhi16 :='ox'+jinzhi16;
edt1.Text := jinzhi16;
end;
测试没问题
procedure TForm1.btn1Click(Sender: TObject);
var i:Integer;
jinzhi16 : string ;
begin
i:=strtoint('$'+(edt1.text)); //加'$'后,原本的字符串就成了16进制数
jinzhi16 :=IntToStr(i);
while(length(jinzhi16)<4)do
begin
jinzhi16 :='0'+jinzhi16;
end;
jinzhi16 :='ox'+jinzhi16;
edt1.Text := jinzhi16;
end;
测试没问题
参考资料: http://hi.baidu.com/gaops/blog/item/41f9c4161b5a0409962b434a.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单实现的方法
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
arr: array[0..49] of integer;
lst: TStringList;
begin
lst := TStringList.Create;
for i:=0 to 49 do
begin
arr[i] := i;//数组没数据,简单替代一下
lst.Add('0x'+inttohex(arr[i],4));
end;
lst.SaveToFile('E:\list.txt');
lst.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
arr: array[0..49] of integer;
lst: TStringList;
begin
lst := TStringList.Create;
for i:=0 to 49 do
begin
arr[i] := i;//数组没数据,简单替代一下
lst.Add('0x'+inttohex(arr[i],4));
end;
lst.SaveToFile('E:\list.txt');
lst.Free;
end;
更多追问追答
追问
能说下QQ么。? 有几个小问题还要问下。。弄清楚了在加100分采纳。。
追答
Q120203851
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询