int i =5;
byte j[2];
以上是我所拥有的。我希望 5 等于十六进制 0x35,即 ASCII 中的“5”。我该如何写才能转换j[0]= i = 0x35
呢?
只需在 google 查询中输入“ascii”并进行第一次点击,您会看到数字的偏移量为 48。
有点笨拙但始终正确的方法是使用 Encoding 类:
byte[] j = Encoding.ASCII.GetBytes(i.ToString());
这将为您提供一个长度为 1 的数组,即正确的结果。
用这个:
j[0] = (byte)('0' + i);
这使得当 i 为 0 时,它将只是 i,并且对于 i 的每增加一次,它也会增加。
只需添加0x30
并再次i
将结果转换为byte
:
j[0] = (byte)(i + 0x30);
您可以为此使用 char/int 算术
j[2] = '0' + (byte)i;
由于 .NET 不使用 ASCII 进行字符串编码,因此“正确”的做法有点迂回:
byte[] result = Encoding.ASCII.GetBytes(i.ToString());
(这需要System.Text
导入命名空间。)
由于 ASCII 编码非常简单(即对应于 .NET 的前 127 个代码点的内部字符编码),您也可以作弊并使用其他答案中提出的方法(即添加'0'
或0x30
显式转换为byte
)。
您也可以使用char
. 它解决了一个相关的问题。
char A = 'A';
char B = A++;