一个汉字占几个字节?(10分)

  • 主题发起人 主题发起人 lcl_003
  • 开始时间 开始时间
L

lcl_003

Unregistered / Unconfirmed
GUEST, unregistred user!
一个汉字占几个字节?忘了,记得好象是4个,拿不准。如果超过1个字节我可以不可以把它拆
成一个字节一个字节的?
 
2个,不可以,拆完了就是乱码了
 
真的不能拆吗?可是我一定要拆的,有办法吗?我到可以不管是不是乱码,因为并不一定要
显示。是这样的我要把汉字发给另外一台机器,但是他那台机器上的程序是c写的,说是
只能接收一个字节的字符,所以我发送的时候就要拆,如果我拆了是乱码,但是我在原
封不动的合并还是乱码吗?有什么办法解决
 
a:array of byte;
s:strign;
s:='你好'
move(s,a,lenght(s))
 

叫他改写程序,一次一个byte,太少了。
 
ugvanxk, 你的代码什么意思,说一下可以吗。
影 子, 因为我不懂c,可是他说c里只能定义一个字节的字符,不知对不对
 

你可以告诉他用数组。
 
要那个懒鬼定义一个字符数组,否则弄不来。汉字必须是两个字节,拆开出来个什么东西。
 
使用unicode
 
他是用的数组,但是情况是这样的比如他定义了一个数组i[0..10] (不知道c里如何定义,
反正就是这个意思)但是他的 i[0]只能接收1个字节的字符,而我要发一个汉字“人”是要占
两个字节,而我这两个字节又是在一起的,我怎么发给他?
 
用wideString
var strV:wideString
就可以!!!!!
 
对WideString就可以。
拆开也没关系,合并就是了。
char c1[10];
0
1
2
3
4
5
6
7
8
9
只能表示五个字。
 
能拆!!!我最新开始学编程时用C拆过,拆完全是黑的数条,宽是“■”的二分之一,
海不全是黑的,就像里面针扎的似的,全是点组成的。
 
哦,我想起来了,因为我发送数据是调用动态连接库的一个函数:
function RecvData(lsn:integer;data:array of byte):integer;stdcall;external 'netdll.dll';
function SendData(lsn:integer;data:array of byte):integer;stdcall;external 'netdll.dll';
因为发送和接收都是byte型的,那我是不是还得改动态连接库?还是有别的解决办法?
 
将string转为pchar应该可以直接作为你的“data”参数,大不了再加一个强制转换。
 
可以拆。
var s:string;b:byte;
begin
s := '人';
b := ord(s[1]);
发送;
b := ord(s[2]);
发送;
end;

 
一个汉字当然是2个字节啦,当你想的到一个汉字时你可以这样做:
Var z:string;
z:=chr($D7)+chr($D6);
showMessage(z);//字
汉字拆分是用ord()函数。
 
2个!这是小学生的东西了,可以拆,但拆了就是乱码,组装一定要小心才行
 
哦,现在的问题是汉字能转换成integer型吗?

哦,我想起来了,因为我发送数据是调用动态连接库的一个函数:
function RecvData(lsn:integer;data:array of byte):integer;stdcall;external 'netdll.dll';
function SendData(lsn:integer;data:array of byte):integer;stdcall;external 'netdll.dll';
因为发送和接收都是byte型的,那我是不是还得改动态连接库?还是有别的解决办法?
 
后退
顶部