木子屋 Dnawo's BLOG

C# short转byte

👤 dnawo 📅 2009-08-10 👁 9178 👍 0 💬 0 🔄 本站原创
short占2个字节,byte占1个字节,因而不能直接将short转换成byte,如果强制进行转换,结果可能会不正确。正确的做法是将一个short转为一个byte[]:

short i = 25991;

byte[] b = new byte[2];
b[0] = (byte)((0xff00 & i) >> 8);
b[1] = (byte)(0xff & i);

我们知道,每个Unicode字符占用2个字节,那么按上边的思路将Unicode字符转成byte也就容易了:

char c = '文'; //一个 Unicode 字符
short i = (short)c;
byte[] b = new byte[2];
b[0] = (byte)((0xff00 & i) >> 8);
b[1] = (byte)(0xff & i);

测试发现:short的取值范围为[-32768,32767],将编码大于32767的字符转为short时结果为负数,但不影响转化成byte[]的结果,也可考虑将short转换成ushort。

char c = '文'; //一个 Unicode 字符
[color=Red]ushort[/color] i = ([color=Red]ushort[/color])c;
byte[] b = new byte[2];
b[0] = (byte)((0xff00 & i) >> 8);
b[1] = (byte)(0xff & i);

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 C# BinaryWriter和StreamWriter一些区别 下一篇 → FileStream复制文件注意事项