c#中char、string转换为十六进制byte的浅析
2024-10-19 12:40:52
问题引出: string转换为byte(十六进制)
static void Main(string[] args)
{
string str = "";
byte[] b = Encoding.Default.GetBytes(str);
for (int i = ; i < b.Length; i++)
{
Console.WriteLine(b[i]);
}
Console.ReadKey();
}
运行结果:
问题来了,为什么转化的结果是这个呢?48、53...是表示十进制还是十六进制呢?为什么不是0x00,0x05....或者是其他的....于是在网上搜查......
ASCII引出,在计算机,所有的数据在存储和运算都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
通过表可以看出,字符串转化为字节数组,是将每个字符转化为对应的ASCII码,在C#中(VS 2013)打印字符串都是打印的十进制,若想打印出十六进制的需对代码作微小变得。
static void Main(string[] args)
{
string str = "";
byte[] b = Encoding.Default.GetBytes(str); for (int i = ; i < b.Length; i++)
{
Console.WriteLine(b[i].ToString("x2"));
}
Console.ReadKey();
}
运行结果:
ToString("x2") 为C#中的字符串格式控制符
x表示 十六进制
2表示 每次都是两位数
这个结果输出的就是16进制的字符。
最新文章
- INFORMATICA 的调优之 INFORMATICA SERVER TUNING
- uva 10810
- C++11 并发指南------std::thread 详解
- spring beans的写入工具——spring-beans-writer
- js调用asp.net 后台属性值
- DBMS_SCHEDULER and DBMS_JOB
- SqlServer排序(null值,和非空值排列顺序)
- windows下php开发环境的搭建
- GCD下载图片
- BOM基础(二)
- Java并发基础——Thread
- 高性能消息队列 CKafka 核心原理介绍(上)
- Mybatis第六篇【配置文件和映射文件再解读、占位符、主键生成与获取、Mapper代理】
- 17.QT-事件处理分析、事件过滤器、拖放事件
- Jmeter + Grafana搭建实时监控可视化
- 系统功能调用Windows操作系统原理实验
- php 的文件操作类
- ubuntu18.04下安装mysql后无法用mysqlworkbench访问
- Serv-u 备份处理
- Linux下使用mail发送邮件
热门文章
- vscode Variables Reference
- 转:浅谈Spectral Clustering 谱聚类
- [WC2005]双面棋盘
- [洛谷P2161][SHOI2009]会场预约
- spring任务执行器与任务调度器(TaskExecutor And TaskScheduler)
- Android View 绘制刷新流程分析
- 基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)
- 关闭nginx日志
- ASP.NET基础学习(暴力破解密码)
- maven中net.sf.json报错的解决方法(转载)