[C#] 二进制, 十进制, 十六进制, 进制转换

62 篇文章 6 订阅
35 篇文章 1 订阅

在源码中:

C# 中允许在代码中使用 0x 开头的十六进制数字, 以及 0b 开头的二进制数字来表示一个整数. 下面的语法是合理的.

int a = 123;
int b = 0xFF;
int c = 0b10010;

从数字转换

将一个数字转换为某进制的字符串, 有两种方式:

// 第一种: 使用 Convert 类. 可转换为 二进制 八进制 十进制 十六进制
Convert.ToString(10, 2);      // 二进制, 返回 "1010"
Convert.ToString(10, 8);      // 八进制, 返回 "12"
Convert.ToString(10, 10);     // 十进制, 返回 "10"
Convert.ToString(10, 16);     // 十六进制, 返回 "a"

// 第二种: 使用对象的 ToString() 方法. 只能转换为 十六进制
10.ToString("x");             // 返回 "a"
10.ToString("X");             // 返回 "A"
10.ToString("x2");            // 返回 "0a"
10.ToString("X2");            // 返回 "0A"

// 第三种: 使用 String 的静态方法 Format, 只能转换为 十六进制
string.Format("{0:x}", 10)    // 返回 "a"
string.Format("{0:X}", 10)    // 返回 "A"
string.Format("{0:x2}", 10)   // 返回 "0a", 即填充至宽2
string.Format("{0:X2}", 10)   // 返回 "0A", 同样填充

从字符串转换

将字符串转换为对应的数据, 有两种方式

// 第一种: 使用 Convert类. 可转换 二进制 八进制 十进制 十六进制, 这里以 int 为例
Convert.ToInt32("1010", 2);   // 二进制, 返回 10
Convert.ToInt32("12", 8);     // 八进制, 返回 10
Convert.ToInt32("10", 10);    // 十进制, 返回 10
Convert.ToInt32("A", 16);     // 十六进制, 返回 10
// 第二种: 使用对应数据类型的 Parse 方法, 只支持 十六进制, 这里以 int 为例
int.Parse("A", NumberStyles.HexNumber);  // 返回 10

从字符数组转换

最常用的就是将字符数组转换为十六进制字符串了, Linq 可以帮到我们许多

byte[] array; // 假定这个数组有值

// 第一种: 对应上面的 Convert 类静态方法, 也是个人比较推荐的
string.Join(null, array.Select(v => Convert.ToString(v, 16).PadLeft(2, '0')));      // 返回小写的

// 第二种: 对应格式化方法
string.Join(null, array.Select(v => v.ToString("X2")));

// 第三种: 对应 String 静态 Format 方法
string.Join(null, array.Select(v => string.Format("{0:X2}", v)));
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值