-2
int i =5;
byte j[2];

以上是我所拥有的。我希望 5 等于十六进制 0x35,即 ASCII 中的“5”。我该如何写才能转换j[0]= i = 0x35 呢?

4

6 回答 6

1

只需在 google 查询中输入“ascii”并进行第一次点击,您会看到数字的偏移量为 48。

有点笨拙但始终正确的方法是使用 Encoding 类:

 byte[] j = Encoding.ASCII.GetBytes(i.ToString());

这将为您提供一个长度为 1 的数组,即正确的结果。

于 2012-10-05T10:51:46.303 回答
0

用这个:

j[0] = (byte)('0' + i);

这使得当 i 为 0 时,它将只是 i,并且对于 i 的每增加一次,它也会增加。

于 2012-10-05T10:45:20.853 回答
0

只需添加0x30并再次i将结果转换为byte

j[0] = (byte)(i + 0x30);
于 2012-10-05T10:39:26.270 回答
0

您可以为此使用 char/int 算术

j[2] = '0' + (byte)i;
于 2012-10-05T10:41:56.733 回答
0

由于 .NET 不使用 ASCII 进行字符串编码,因此“正确”的做法有点迂回:

byte[] result = Encoding.ASCII.GetBytes(i.ToString());

(这需要System.Text导入命名空间。)

由于 ASCII 编码非常简单(即对应于 .NET 的前 127 个代码点的内部字符编码),您也可以作弊并使用其他答案中提出的方法(即添加'0'0x30显式转换为byte)。

于 2012-10-05T10:49:51.273 回答
0

您也可以使用char. 它解决了一个相关的问题。

char A = 'A';
char B = A++;
于 2017-02-27T17:33:20.803 回答