求逗号分割的十六进制字符串转汉字函数 ( 积分: 100 )

  • 主题发起人 主题发起人 ian
  • 开始时间 开始时间
I

ian

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样的十六进制字符串:
a4,b9,ee,c1,c5,ba,0
中文是“工令号”三个字
①经我分析,其中a4与b9、ee与c1、c5与ba互换位置,最后那个1位没有用;
②但如果是西文ASCII码时,高低位不互换;
③中间有时会出现1位的字符或数字;
那位能给个现成的函数?
 
function TurnBuffer;//转换函数
var
t, s:string;
i: integer;
begin
S := #$A4#$B9#$EE#$C1#$C4#$BA;
T := '';
i := 1;
repeat
if S > #128 then begin
//Move(S, C, 2);
T := T + S[i + 1] + S;
i := i + 1;
end else begin
T := T + S;
end;
I := I + 1;
until i > Length(S);
Result := T; // T = 工令号
end;
 
他是把汉字的2个字节按照Word格式存放,
你贴多点那个串看看就知道了,无非是把汉字码前后调换个位置。
还不是WideString.
 
谢谢回复
不过,有时是这样的: a4,b9,ee,d,c5,ba,0
如当中的那个‘D’,只有一位,该怎么处理?还请继续指点。
 
要看情况,应该不会只有一个 D 的情况
能够说明是在什么地方发现的吗?
或者文件是什么?
 
这是开目CAPP专有文件中的数据,用于制造业辅助工艺设计,我需要将其中的数据提取出来,用于其他系统。
该文件中有时会出现上述单个字符的情况。
 
他的文件格式里面就有逗号吗?
能不能发个文件给我看看呢,
a4,b9,ee,d,c5,ba,0
 
你有邮箱吗?附件不大,是ASCII的
 
我的油箱地址:
fangmin@yeah.net

我估计就是这样的情况。
如果有文件发来我分析就知道格式了。
 
邮件发了,请看看
 
我的函数返回的是字符串啊,
那么你要什么结果啊
 
发给我的文件就是一个文本文件啊!!!

如果还需要,你别离开,
有QQ 可以 QQ 聊,我的= 31869179.
 
我读出的与你读出的相反啊,

你是怎么读的记录啊
 
我的QQ:254612195
 
文件中前面的不重要,实际上主要的数据在如下的结构中:
D54,29,1,2010,1
Z54,仿宋_GB2312
p41b2,0,69,0
d1;33,17
u8,241,112.666656,14,7.666667,4,0.800000,1,1
t6
16,d5,c8,20,da,c6
前面的是表格控制信息和精确打印信息,内容在最后一行
“16,”不是有用的数据,“d5,c8,20,da,c6”才是有效信息,这几个字是“日 期”,中间的20是空格,前面的d5,c8是高位在后,低位在前,这些在你的函数里可以正确转换和解读,但是如下面:
D77,29,1,2010,1
Z77,仿宋_GB2312
p41b2,0,69,0
d1;33,17
u8,341,232,8,32,4,0.800000,1,1
t15
16,a5,b5,d,16,fe,bc,d,16,fa,b2,d,16,b7,c6
最后有"d," 怎么办?
 
先结贴了,回头做好了我会把代码贴出来的
 
后退
顶部