高分求高效算法................

mdejtod 2007-11-29 11:12:24
有如下数据:
97F34E5064AD6532
要求转换成这样的格式:
97 F3 4E 50 64 AD 65 32 00 00 00 00 00 00 00 00 ;
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;

既,在原串的偶数位后加上空格,然后将它补齐成如上格式,将字符串补齐为64个字节( 在Unicode编码中)
由于原串的数据量太大,转换之后还要写到文本文件中,不足的就用 00 补齐
不知哪位可以给出高效的算法
...全文
203 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
heb21 2007-12-11
  • 打赏
  • 举报
回复
不明白!来顶下!
mdejtod 2007-12-11
  • 打赏
  • 举报
回复
不让它沉了,将其它国的语言转换为unicode码要怎么转?
function TFrmMenu.AnsiToUnicode(Ansi: Variant): string; //ANSI转换为 Unicode码
var s:string;
i:integer;
j,k:string[2];
a:array [1..1000] of char;
Temp:Pwidechar;
begin
s:='';
Temp:=StringToWideChar(Ansi,@(a[1]),512);
i:=1;
while ((a[i]<>#0) or (a[i+1]<>#0)) do
begin
j:=IntToHex(Integer(a[i]),2);
k:=IntToHex(Integer(a[i+1]),2);
s:=s+k+j;
i:=i+2;
end;
Result:=s;
end;
比如泰文,这样转出来的全是 ????? 的unicode码...不知道要怎么办了,接收的参数Ansi是正确的: '2)2D-|"', 可就是得不到这个串的unicode码,而是 ????? 的unicode编码,请问要怎么办??
mdejtod 2007-12-10
  • 打赏
  • 举报
回复
楼主的高人.要怎么做?
ahjoe 2007-12-09
  • 打赏
  • 举报
回复
明白了,要把字符串转换成数。
mdejtod 2007-12-07
  • 打赏
  • 举报
回复
自己都要晕了,就是不管怎么操作,最后要得到这样的效果,用UE或其它16进制编译器查看文件时,显示的是
97 F3 4E 10 64 AD 65 32 00 00 00 00 这样的
mdejtod 2007-12-07
  • 打赏
  • 举报
回复
平常怎么写文件,就怎么写啊,这个不用问吧。搞不懂你说什么。
什么叫:
> > 97F34E5064AD6532..00 这样的一个字符串数组以16进制的方式

var
S: array [0..X] of Char;

S[0] := $#97;
S[1] := $#F3;
------------------------
这样得来的数组是一个字符串形式的,现在要将它转换成对应的字符写入到文件中
mdejtod 2007-12-06
  • 打赏
  • 举报
回复
谢谢,可是,我要把 97F34E5064AD6532..00 这样的一个固定长度的字符数组,以16进制的方式写入到文本里面,不知道要怎么写哪,就是要把97,F3,4E,50,64,AD,65,32,00转换成十六进制的字符,写入到文件中
neweipeng 2007-12-06
  • 打赏
  • 举报
回复
eg. 十六进制字符97 转换成 十六进制数$97对应的字符:char(strtoint('$'+'97'))
ERR0RC0DE 2007-12-06
  • 打赏
  • 举报
回复
有些问题:

while size > 0 do
begin
R[0] := hextables[S^ shr 4];
R[1] := hextables[S^ and 3];
R[2] := #32;
Inc(S);
Inc(R, 3);
Dec(size);
end;

R[1] := hextables[S^ and 3];
改成:
R[1] := hextables[S^ and $F];


之前写的快了些,没注意到.
其中操作:
V shr 4 ==> V div 16
V and $F ==> V mod 16


平常怎么写文件,就怎么写啊,这个不用问吧。搞不懂你说什么。
什么叫:
>> 97F34E5064AD6532..00 这样的一个字符串数组以16进制的方式

var
S: array [0..X] of Char;

S[0] := $#97;
S[1] := $#F3;
...
还是:
S[0] := '9';
S[1] := '7';

还是其它?
mdejtod 2007-12-06
  • 打赏
  • 举报
回复
嗯,谢谢,现在要把 97F34E5064AD6532..00 这样的一个字符串数组以16进制的方式写入到文本文件中,请问有什么好的办法?就是让这个文件,以16进制的方式查看时,显示的是 97 F3 4E 50 64 AD 65 32 00 00 00 00 这样....
ERR0RC0DE 2007-12-03
  • 打赏
  • 举报
回复
get(const buf; size: Integer)
将长度是size的buf,进行16进制字符转换,转换长度固定为align_size,你试试不就清楚了?哪里不明?你的要求不是按那样转换的吗?

16进制转换啊,就那么几句话而已,你的要求不过就是有个固定长度和补0的情况啊。
mdejtod 2007-12-03
  • 打赏
  • 举报
回复
谢谢楼上的,不过不太明白你这函数的作用.....麻烦能不能讲解一下?
ERR0RC0DE 2007-12-02
  • 打赏
  • 举报
回复
unicode文件,前面两字节是FF FE,后面为unicode字串的文本,根据这写就行了。

转换

function Get(const buf; size: Integer): string;
const
align = 64;
align_size = align * 2 + align - 1;
hextables: PChar = '0123456789ABCDEF';
var
zerolen: Integer;
S: PByte;
R: PChar;
begin
if size > align then
size := align;
zerolen := align - size;
Result := StringOfChar(#0, align_size);
S := @Buf;
R := PChar(Result);

while size > 0 do
begin
R[0] := hextables[S^ shr 4];
R[1] := hextables[S^ and 3];
R[2] := #32;
Inc(S);
Inc(R, 3);
Dec(size);
end;

while zerolen > 0 do
begin
R[0] := '0';
R[1] := '0';
Dec(zerolen);
if zerolen <= 0 then break;
R[2] := #32;
Inc(R, 3);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
S := #$97#$F3#$4E#$50#$64#$AD#$65#$32 ;
Memo1.Text := get(s[1], length(s));
end;
kshuangshuzhen 2007-12-01
  • 打赏
  • 举报
回复
我不会,我来顶一下拿分走人
ideation_shang 2007-12-01
  • 打赏
  • 举报
回复
问也没什么,不开新贴就是你的不对了 ^..^
oushengfen 2007-12-01
  • 打赏
  • 举报
回复
自己读出来,再转换一下就不完了,何必还问呢
mdejtod 2007-11-30
  • 打赏
  • 举报
回复
哪位知道用文件流操作十六进制的文件?
比如,创建一个文本文件,让它以 Unicode编码的格式保存,然后再写入十六进制的数,要怎么实现?还有就是怎么以十六进制的方式打开一个文件??????
awperpvip 2007-11-30
  • 打赏
  • 举报
回复
MultiByteToWideChar
mdejtod 2007-11-30
  • 打赏
  • 举报
回复
谢了,以十六进制的格式读写文件,用文件流,哪位有用过呀?
新建一个文本文件,让它以 Unicode编码格式保存,并写入十六进制数要怎么实现?
brightyang 2007-11-30
  • 打赏
  • 举报
回复
2楼的
加载更多回复(3)

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧