当前位置: 首页 > 编程语言 > C#

c#与Encoding.ASCII.GetString分享

时间:2023-04-10 18:20:17 C#

c#与Encoding.ASCII.GetStringbyte[]header=newbyte[]{255,216};stringascii=Encoding.ASCII.GetString(header);我希望ASCII等于FFD8(JPEGSOI标签)而不是我得到“????”在这种情况下,您最好比较字节数组而不是转换为字符串。如果必须转换为字符串,我建议使用编码Latin-1akaISO-8859-1aka代码页28591编码,因为这种编码会将所有具有十六进制值的字节映射到0到256之间的Unicode字符。相同的十六进制值-对于这种情况很方便。以下任何一项都将获得此编码:Encoding.GetEncoding(28591)Encoding.GetEncoding("Latin1")Encoding.GetEncoding("ISO-8859-1")是的,那是因为ASCII只有7位-它没有定义任何值高于127。编码通常将未知的二进制值解码为'?’(尽管这可以使用DecoderFallback进行更改)。如果您要参考“扩展ASCII”,我怀疑您真的想要Encoding.Default,这是“操作系统的默认代码页”……我相信大多数西方系统的代码页1252。你期待什么角色?编辑:根据接受的答案(我怀疑问题是在我添加答案后编辑的;我不记得看到过任何关于JPEG的信息)你不应该将二进制数据转换为文本,除非它是真正编码的文本数据。JPEG数据是二进制数据-因此您应该根据预期字节检查实际字节数。任何时候使用“正常”文本编码(例如ASCII、UTF-8等)将任意二进制数据(例如图像、音乐或视频)转换为文本时,都可能会丢失数据。如果必须将其转换为文本,请使用Base64,这是一种安全可靠的方法。但是,如果您只想将其与预期的二进制数据进行比较,最好不要将其转换为文本。编辑:好的,这是一个类来帮助给定字节数组的图像检测方法。我还不是特定于HTTP;我不完全确定您是否应该真正获取InputStream,只需阅读一下,然后再次获取流。我坚持使用节数组来解决这个问题:)usingSystem;使用System.Collections.Generic;使用System.Collections.ObjectModel;使用System.Linq;公共密封类SignatureDetector{publicstaticreadonlySignatureDetectorPng=newSignatureDetector(0x89,0x50,0x4e,0x47);publicstaticreadonlySignatureDetectorBmp=newSignatureDetector(0x42,0x4d);publicstaticreadonlySignatureDetectorGif=newSignatureDetector(0x47,0x49,0x46);publicstaticreadonlySignatureDetectorJpeg=newSignatureDetector(0xff,0xd8);publicstaticreadonlyIEnumerableImages=newReadOnlyCollection(new[]{Png,Bmp,Gif,Jpeg});私有只读字节[]字节;publicSignatureDetector(paramsbyte[]bytes){if(bytes==null){thrownewArgumentNullException("bytes");this.bytes=(byte[])bytes.Clone();}publicboolMatches(byte[]data){if(data==null){thrownewArgumentNullException("data");}if(data.Lengthdetector.Matches(data));}}如果你接着写:Console.WriteLine(ascii)并期望打印“FFD8”,这不是GetString的工作方式为此,您需要:stringascii=String.Format("{0:X02}{1:X02}",header[0],header[1]);我曾经写过一个自定义编码器/解码器,将字节0-255编码为un??icode字符0-255,然后再返回。它只对在实际上不是字符串的事物上使用字符串函数才真正有用。你确定吗”????”结果?结果是什么:(int)ascii[0](int)ascii[1]另一方面,纯ASCII只有0-127...以上就是C#学习教程的全部内容:c#和Encoding.ASCII。GetString分享,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: