请教关于 int char unicode byte 之间的转换

yonglaixiazaide 2012-08-21 03:23:45

char c = '你';
int a = (int)c;//a=20320
c = (char)a;//c='你'
a = (int)c;


这里 a = (int)c 有的人说是将c变变为了一个unicode 编码 这里 可以理解

我想搞清楚的是

Encoding e = Encoding.GetEncoding("gb2312");

byte[] by = e.GetBytes("你");


这中间的by[0]=192,by[1]=227 gb2312 高位和低位


如果是Unicode

   Encoding e = Encoding.Unicode;

byte[] by = e.GetBytes("你");


这里是by[0]=96,by[1]=79

我在这里移位也得不到 int a = (int)c;//a=20320 这个20320


我纠结的是 如何通过这个byte[0],byte[1] 转成一个中文你,不要系统封装的,
可以用位运算或者其他的


...全文
183 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yonglaixiazaide 2012-08-23
  • 打赏
  • 举报
回复
这么好玩的 。。没人来。。。
yonglaixiazaide 2012-08-22
  • 打赏
  • 举报
回复
啊? 这个怎么来的,高位*256+低位?
[Quote=引用 6 楼 的回复:]
20320 = 79 * 256 + 96
单纯的端序问题
[/Quote]
yonglaixiazaide 2012-08-22
  • 打赏
  • 举报
回复
终于出来了,C# code Encoding e = Encoding.Unicode;

byte[] by = e.GetBytes("你");


这里是by[0]=96,by[1]=79

20320 =(((int)by[1])<<8)+(int)by[0];
*256=*2^8=<<8;
iyomumx 2012-08-21
  • 打赏
  • 举报
回复
20320 = 79 * 256 + 96
单纯的端序问题
yonglaixiazaide 2012-08-21
  • 打赏
  • 举报
回复
大家帮我顶一下啊~
yonglaixiazaide 2012-08-21
  • 打赏
  • 举报
回复
自定顶一下
yonglaixiazaide 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
你按照对应的编码转回去就是了,不清楚你要干嘛
[/Quote]

转回去 ,我知道也可以,我只是想知道,这两个byte能不能通过其他的方式转过去,就是不懂原理
bdmh 2012-08-21
  • 打赏
  • 举报
回复
你按照对应的编码转回去就是了,不清楚你要干嘛
yonglaixiazaide 2012-08-21
  • 打赏
  • 举报
回复
我的不要系统封装的 是说不要用Encoding.Unicode.GetString(by)这样的,
有人木有啊

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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