如何用c#将十六进制转换成字符串?


加载或保存XML时引发的异常.System.ArgumentException: “”(十六进制值 0x1D)是无效的字符。
产生原因是xml文件中包含低位非打印字符造成的
处理方法:在产生xml文件的时候,过滤低位非打印字符


把一个字符串中的 低序位 十进制 ASCII 字符 替换成 &#x  字符
转换  ASCII  0 - 8  -> � - 
转换  ASCII 11 - 12 -> - 
转换  ASCII 14 - 31 ->  - 

XML中十六进制无效字符如下:
[\x00-\x08]|[\x0B-\x0C]|[\x0E-\x1F]


解决方法如下:替换无效字符
你想要一个16进制数形式的字符串或是把每个16进制数转成它代表的ascii字符?你的源数据是个byte[]?

第一种就没什么可说的了,直接调每个byte的ToString("X")再叠加.结果:转换成对应的ascii字符
例子:
byte b = 0xff;
string s=b.ToString("X");//s="FF"
第二种:byte是可以直接转成char的,每个ascii码就是一个byte,前面加个(char)强转然后用string迭代相加就可以了.
结果:转换成对应的字符
string s = string.Empty;
s+=(char)b;//这个s的值是ascii码255代表的字符,打不出来

下面是ASCII对应表

第一部分由 00H 到 1FH 共 32 个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上,但能看到其效果(例如换行字符、归位字符)。


第二部分是由 20H 到 7FH 共 96 个,这 95 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。如下表:



第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM 制定的,并非标准的 ASCII 码。这些字符是用来表示框线、音标和其它欧洲非英语系的字母。



原文地址:https://www.cnblogs.com/pingfan/p/2947527.html