问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

delphi7 idTcpServer 怎么以十六进制模式发送中英文混合的字符串(对方只能接收十六进制的数据)?在线急

发布网友 发布时间:2022-05-12 22:37

我来回答

1个回答

热心网友 时间:2023-10-27 06:17

中文转成 array of byte 应该就是你想要的结果
以下是函数和转换例子
我就是这样用字节发送到网络上 和接收的

如果是 带中文的String 转byte
function UniCode2GB(S: string): string;
var I: Integer;
begin
I := Length(S);
while I >= 4 do begin
try
Result := WideChar(StrToInt('$' + S[I - 3] + S[I - 2] + S[I - 1] + S[I])) + Result;
except end;
I := I - 4;
end;
end;
function GB2UniCode(GB: string): string;
var
s: string;
i, j, k: integer;
a: array[1..160] of char;
begin
s := '';
StringToWideChar(GB, @(a[1]), 500);
i := 1;
while ((a[i] <> #0) or (a[i + 1] <> #0)) do begin
j := Integer(a[i]);
k := Integer(a[i + 1]);
s := s + Copy(Format('%X ', [k * $100 + j + $10000]), 2, 4);
//S := S + Char(k)+Char(j);
i := i + 2;
end;
Result := s;
end;

var
s1,name:string;
ByteArr: array of byte;
s1 := GB2UniCode(‘张飒www’);
for I := 0 to round(Length(s1) / 2) - 1 do //以下是转string byte array
begin
ByteArr[I] := StrToint('$' + SubStr(s1, I * 2 + 1, 2));
end;

for I := 0 to len do //以下是byte array 转 string 支持中文
begin
Name := Name + IntToHex(ByteArr[I], 2);
end;
Name := UniCode2GB(Name);

以上是带中文的string 转 byte array 和 byte array 转 String
同样可以支持不带中文的string 和array转换

如果是你用字节方式发送 那就
1 GB2UniCode
2 发送
接收以后
1 转HEX字符串
for I := 0 to len do //以下是byte array 转 string 支持中文
begin
Name := Name + IntToHex(ByteArr[I], 2);
end;
Name := UniCode2GB(Name);
2 UniCode2GB 转String

如果你用String方式发送
1 GB2UniCode
2
for I := 0 to len do //以下是byte array 转 string 支持中文
begin
Name := Name + IntToHex(ByteArr[I], 2);
end;
Name := UniCode2GB(Name);

直接发送Name Name就是16进制的

接收就是 UniCode2GB
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
你好医生我想问下有时过了性生活后老想上厕所又大小便... 电脑开机按f1怎么开机台式电脑开机需要按F1怎么处理 三者30万标准保费 30万左右的车保险多少钱 30万的车 保险 奥数中的余数问题 石家庄市裕华区小岗上新村前不久传出有传销窝点消息可靠吗? 2019公安部曝光77种涉嫌传销项目 2019年传销诈骗项目名单一览 娱乐圈又曝性骚扰,我想说出她的故事 河北省承德市丰宁县的那一带农村7月底是农忙的时间吗?急~~~ 单位招录了10名新员工,按其应聘成绩排名1到10,并用10个连续的四位自然... 已知tcp头部用十六进制数表示为 16进制通讯指令tcp如何发送 中国历史上最后一位皇帝是谁? 中国最后一个皇帝是? 中国历史上最后一位皇帝到底是谁? 中国历史最后一位皇帝是谁 中国历史上最后一位皇帝是谁 中国最后一个皇帝是谁? 中国的最后一个皇帝是谁? 银行贷款没有还,还能分期付款买房吗? 中国的最后一位皇帝是谁 重庆小学校长愿意聘用残障女硕士,聘用后她是否能享受正常聘用教师的待遇? 垫江县启音残疾人康复服务中心教师是有编制吗? 女硕士因残疾未通过教师资格认定,你对此有何看法? 女硕士因残疾未通过教师资格认定,这么做合理吗? 教师特岗不允许残疾人进入吗 脚残疾要用拐杖可以考教师资格证吗? 我想问一下如果有四级视力残疾证对考老师编制影响吗? 容声冰吧怎么样? 残疾男孩右手可以考教师事业编吗? 油炒饭怎么炒好吃? “Welcome!”信息的UTF-8编码十六进制值是什么,这些值在网络中以TCP方式是如何传输的? #运营总监#运营总监具备什么样的技能能够突出 VB中发送16进制数据包? 醤油炒饭怎么做? 如何通过jmeter 发送tcp请求 计算机网络 已知TCP头部用十六进制数表示为:05320017 00000001 00000055 500207FF 00000000。 TCP/IP十六进制的数据分析的出来吗 labview平台下TCP接受网口调试助手发送的十六进制内容 新媒体运营最高能做到什么程度 VB.NET 如何通过TCP/IP协议通讯实现16进制数据的接收? 在VB中建立了 TCP服务器,客户端发送过来一组 20位的数据 按十六进制显示为: .已知TCP头部用十六进制数表示为05320017 000000001 00000000 500207FF 00000000,则其目的端口号为 猪油渣炒饭怎么做好 关于注册规划师。 橄榄油蛋炒饭怎么做 家常饭--酱油炒饭怎么做?最好是即做法简单又味道好吃! 注册规划师最近三年多少?一年多少? 安行保B款BMI投保范围 北大方正人寿安行保两全保险B款怎么样?