关于一个怪的数据转换问题

树上猪 2013-07-29 10:33:00
procedure TDatastrFrm.Button8Click(Sender: TObject);
var
l,len:integer;
dataHex:array[0..1024] of Char;
sendstr:string;
begin
len:=length(trim(memo2.Text));
for l:=((Len-1)div 2) downto 0 do
begin
dataHex[l]:=Chr(StrToInt('$'+copy(trim(memo2.Text),l*2+1,2)));
end;
for l:=0 to ((Len-1)div 2) do
begin
sendstr:=sendstr+dataHex[l]
end;
memo3.Lines.Add(sendstr);
showmessage(sendstr+inttostr(length(sendstr)));
end;

其中,memo2中的内容如果为:
memo2.Lines.Add(Edit1.text+Memo1.text);如(000BCFC2D0D0CBD9B6C8)就不行,Sendstr就输出为空。
但如果为
memo2.Lines.Add(Memo1.text);如(CFC2D0D0CBD9B6C8)就完全没有问题,可以正常的输出16进制数值类型。这把我弄糊涂了,为何加起来就不行。
...全文
726 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oraclers 2013-07-30
  • 打赏
  • 举报
回复
你到网上查看下ASCII码。你的程序是将一个表示十六进制的字符串转换为一个字符数组(也就是字符串),不是转换成十六制数。下面是不可显示的ASCII字符: 二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 0000 0000 0 00 NUL ␀ 空字符(Null) 0000 0001 1 01 SOH ␁ 标题开始 0000 0010 2 02 STX ␂ 本文开始 0000 0011 3 03 ETX ␃ 本文结束 0000 0100 4 04 EOT ␄ 传输结束 0000 0101 5 05 ENQ ␅ 请求 0000 0110 6 06 ACK ␆ 确认回应 0000 0111 7 07 BEL ␇ 响铃 0000 1000 8 08 BS ␈ 退格 0000 1001 9 09 HT ␉ 水平定位符号 0000 1010 10 0A LF ␊ 换行键 0000 1011 11 0B VT ␋ 垂直定位符号 0000 1100 12 0C FF ␌ 换页键 0000 1101 13 0D CR ␍ 归位键 0000 1110 14 0E SO ␎ 取消变换(Shift out) 0000 1111 15 0F SI ␏ 启用变换(Shift in) 0001 0000 16 10 DLE ␐ 跳出数据通讯 0001 0001 17 11 DC1 ␑ 设备控制一(XON 启用软件速度控制) 0001 0010 18 12 DC2 ␒ 设备控制二 0001 0011 19 13 DC3 ␓ 设备控制三(XOFF 停用软件速度控制) 0001 0100 20 14 DC4 ␔ 设备控制四 0001 0101 21 15 NAK ␕ 确认失败回应 0001 0110 22 16 SYN ␖ 同步用暂停 0001 0111 23 17 ETB ␗ 区块传输结束 0001 1000 24 18 CAN ␘ 取消 0001 1001 25 19 EM ␙ 连接介质中断 0001 1010 26 1A SUB ␚ 替换 0001 1011 27 1B ESC ␛ 跳出 0001 1100 28 1C FS ␜ 文件分割符 0001 1101 29 1D GS ␝ 组群分隔符 0001 1110 30 1E RS ␞ 记录分隔符 0001 1111 31 1F US ␟ 单元分隔符 0111 1111 127 7F DEL ␡ 删除
树上猪 2013-07-30
  • 打赏
  • 举报
回复
我试了一下,如果开头为其它数也不行一样的,如0E或08等也是不行的
树上猪 2013-07-30
  • 打赏
  • 举报
回复
我这里是转为16进制数值,那请问这个00表示的16进制数值又是怎样的处理
Oraclers 2013-07-29
  • 打赏
  • 举报
回复
000BCFC2D0D0CBD9B6C8,这个字串中第一个“00”,它的ASCII码代表字符:NULL(键盘输入时可以按Ctrl+0),是一个不可见字符。转换成字符数组(也就是字符串)的第一字符为NULL,当然什么都看不见了。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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