巧用位移运算符获取汉字编码值

1.巧用位移运算符获取汉字编码值
本实例实现时主要是利用移位运算符获取汉字编码值,先讲解一下位移运行符的相关概念。

位移运算符分为左位移运算符“<<”和右位移运算符“>>”,分别用于向左和向右执行移位运算。对于X<<N或X>>N形式的运算,含义是将X向左或向右移动N位,X的类型可以是int、uint、long、ulong、bytes、byte、short和ushort。需要注意的是,byte、sbyte、short和ushort类型的值在进行位移操作后值的类型将自动转换成int类型。比如byte类型的1101向左位移4位后为11010000,位移操作后值的为208(自动转换成int类型)。

PS:在进行位移运算时,当数值的二进制数每次向左移1位就相当于乘以2,当数值每次向右移1位就相当于除以2。

获取汉字编码值的实现思路,众所周知,以GB2312标准编码的汉字,每个汉字都是用两个8位二进制字节储存的,我们只需要这两个字节第一个字节向左位移8位后(变成高8位),与第二个字符相加得到汉字编码值(int类型)。

具体实现关键源代码如下:
try
{
char chr = txt_chr.Text[0];//获得一个汉字字符
byte[] gb2312_bt = //使用gb2312编码方式获得字节序列
Encoding.GetEncoding("gb2312").GetBytes(new Char[] { chr });
int n = (int)gb2312_bt[0] << 8;//将字节序列的第一个字节向左移8位
n += (int)gb2312_bt[1];//第一个字节移8位后与第二个字节相加得到汉字编码
txt_Num.Text = n.ToString();//显示汉字编码
}
catch (Exception)
{
MessageBox.Show(//异常提示信息
"请输入汉字字符!", "出现错误!");
}
2.什么是闰年?
公元年数可被4整除为闰年,但是正百的年数必须是可以被400整除的才是闰年。
ushort P_usint_temp;//定义局部变量
if (ushort.TryParse(//将输入字符串转换为数值
txt_year.Text, out P_usint_temp))
{
MessageBox.Show(//输出计算结果
(P_usint_temp % 4 == 0 && P_usint_temp % 100 != 0)//判断是否为闰年
|| P_usint_temp % 400 == 0 ? "输入的是闰年!" : "输入的不是闰年!",
"提示!");
}
else
{
MessageBox.Show(//提示输入数值不正确
"请输入正确数值!", "提示!");
}
3.使用checked关键字处理“溢出”错误
byte bt_One, bt_Two;//定义两个byte类型变量
if (byte.TryParse(//对两个byte类型变量赋值
txt_Add_One.Text, out bt_One)
&& byte.TryParse(txt_Add_Two.Text, out bt_Two))
{
try
{
checked { bt_One += bt_Two; }//使用checke关键字判断是否有溢出
txt_Result.Text = bt_One.ToString();//输出相加后的结果
}
catch (OverflowException ex)
{
MessageBox.Show(ex.Message,"出错!");//输出异常信息
}
}
else
{
MessageBox.Show("请输入255以内的数字!");//输出错误信息
}
4.使用typeof关键字获取类的内部结构
Type type = typeof(System.Int32);//获得int类型的Type对象
foreach (MethodInfo method in type.GetMethods())//遍历string类中定义的所有公共方法
{
rtbox_text.AppendText(
"方法名称:" + method.Name + Environment.NewLine);//输出方法名称
foreach (ParameterInfo parameter in method.GetParameters())//遍历公共方法中所有参数
{
rtbox_text.AppendText(
" 参数:" + parameter.Name + Environment.NewLine);//输出参数名称
}
}
4.商品金额的大小写转换
public string NumToChinese(string x)
{
//数字转换为中文后的数组
string[] P_array_num = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
//为数字位数建立一个位数组
string[] P_array_digit = new string[] { "", "拾", "佰", "仟" };
//为数字单位建立一个单位数组
string[] P_array_units = new string[] { "", "万", "亿", "万亿" };
string P_str_returnValue = ""; //返回值
int finger = 0; //字符位置指针
int P_int_m = x.Length % 4; //取模
int P_int_k = 0;
if (P_int_m > 0)
P_int_k = x.Length / 4 + 1;
else
P_int_k = x.Length / 4;
//外层循环,四位一组,每组最后加上单位: ",万亿,",",亿,",",万,"
for (int i = P_int_k; i > 0; i--)
{
int P_int_L = 4;
if (i == P_int_k && P_int_m != 0)
P_int_L = P_int_m;
//得到一组四位数
string four = x.Substring(finger, P_int_L);
int P_int_l = four.Length;
//内层循环在该组中的每一位数上循环
for (int j = 0; j < P_int_l; j++)
{
//处理组中的每一位数加上所在的位
int n = Convert.ToInt32(four.Substring(j, 1));
if (n == 0)
{
if (j < P_int_l - 1 && Convert.ToInt32(four.Substring(j + 1, 1)) > 0 && !P_str_returnValue.EndsWith(P_array_num[n]))
P_str_returnValue += P_array_num[n];
}
else
{
if (!(n == 1 && (P_str_returnValue.EndsWith(P_array_num[0]) | P_str_returnValue.Length == 0) && j == P_int_l - 2))
P_str_returnValue += P_array_num[n];
P_str_returnValue += P_array_digit[P_int_l - j - 1];
}
}
finger += P_int_L;
//每组最后加上一个单位:",万,",",亿," 等
if (i < P_int_k) //如果不是最高位的一组
{
if (Convert.ToInt32(four) != 0)
//如果所有4位不全是0则加上单位",万,",",亿,"等
P_str_returnValue += P_array_units[i - 1];
}
else
{
//处理最高位的一组,最后必须加上单位
P_str_returnValue += P_array_units[i - 1];
}
}
return P_str_returnValue;
}

转载于:https://www.cnblogs.com/jxyZ/p/3281313.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值