德尔斐中字符串、转换、字节之间的转换
这个问题要从最近一个项目谈起,服务器端要求UTF8编码特尔斐内部是UTF16编码,为了避免风险我将代码中数据都定义为翻译,但实际还是除了些问题。
德尔福七下
缓冲器是tbytes型温度是线型
温度:=字符串(指针(缓冲区));
setlength(温度,长度(缓冲区));
复制内存(指针(临时)、@缓冲区[0]、长度(缓冲区));到了元素氙的符号后,也许经过点网洗礼后,下面的代码更好理解,当然这是站在开发者的角度var。
Buf : TBytes
S :字符串;
开始
//AnsiChar内存数组-unicode字符串
SetLength(Buf,2);
buf[0]:=65;//A的Ansii码
buf[1]:=66;//B~~
S :=TEncoding .ANSI。getString(Buf);//AnsiChar内存数组-unicode字符串
显示消息;
//UnicodeString - AnsiChar内存数组
SetLength(Buf,0);//这句是测试时使用,实际使用时,不需要先清除
Buf :=TEncoding .Unicode。GetBytes//UnicodeString-AnsiChar内存数组
显示消息(IntToStr(Buf[0]);
结束;所谓聪明的人用帕斯卡尔,德尔菲站在使用者角度可以这么写
使用SysUtils
一、字符串转为翻译
1、直接赋值(有警告)
2、翻译()类型强制转换。(无警告)
二、翻译转为线
1、直接赋值(有警告)
2、字符串()类型强制转换。(无警告)
三、字符串转为结核病(tuberculosis)字节
1、bytes:=bytesof(字符串)已转为美国国家标准学会编码
2、字节:=widebytesof(str)UNICODE编码
四、翻译转为结核病(tuberculosis)字节
1、bytes:=bytesof(str) ansi编码
2、字节:=widebytesof(字符串(str))UNICODE编码
五、Tbytes转为线
1、str:=stringof(字节)Tbytes为美国国家标准学会编码
2、str:=widestringof(字节)Tbytes为采用双字节对字符进行编码编码
六、PChar转线
用StrPas函数,str pas(PChar): ansi字符串;
当然这内部大部分还是还是如下之类!
结果:=十进制编码.UTF8。GetString(TEncoding .UTF8。GetBytes(SteMP));
这里不得不说说,拉扎勒斯/FPC,UTF8作为默认编码,而且强制几次就好方便很多。
————————————————
部分内容引用
原文链接:https://博客。csdn。net/u 011706768/article/details/119566174】暗夜魔尊」
原文链接:https://博客。csdn。net/zxm 8513/article/details/104728514『zxm 8513』
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/92788.html