从system.byte []转换为字符串 [英] Converting from system.byte[] to string
问题描述
我有WMP11 SDK的这段代码返回了错误的值.
Case CreateEditor.WMT_ATTR_DATATYPE.WMT_TYPE_GUID
tagValue ="{"&BitConverter.ToString(attribValue)&}"
''tagValue = BitConverter.ToString(attribValue,0,attribValue.Length)
''tagValue = Convert.ToBase64String(attribValue)
''tagValue = System.Text.UnicodeEncoding.ASCII(attribValue)
''tagValue = Encoding.ASCII.GetString(attribValue)
''tagValue = Encoding.Unicode.GetString(attribValue)
''tagValue = Encoding.UTF8.GetString(attribValue)
我已经评论了我尝试过的其他内容.其中大多数返回乱码.
attribValue.tostring返回{System.Byte []}.
上面的代码(bitconverter.tostring)返回{BC-7D-60-D1-23-E3-E2-4B-86-A1-48-A4-2A-28-44-1E-00}.
我还有另一个使用AxInterop.WMPLib的应用程序,它应返回{D1607DBC-E323-4BE2-86A1-48A42A28441E}.
关于我可以尝试的任何建议吗?
有没有办法确定使用了哪种编码器?
谢谢
I have this bit of code from WMP11 SDK that returns an incorrect value.
Case CreateEditor.WMT_ATTR_DATATYPE.WMT_TYPE_GUID
tagValue = "{" & BitConverter.ToString(attribValue) & "}"
'' tagValue = BitConverter.ToString(attribValue, 0, attribValue.Length)
'' tagValue = Convert.ToBase64String(attribValue)
'' tagValue = System.Text.UnicodeEncoding.ASCII(attribValue)
'' tagValue = Encoding.ASCII.GetString(attribValue)
'' tagValue = Encoding.Unicode.GetString(attribValue)
'' tagValue = Encoding.UTF8.GetString(attribValue)
I have commented out other things I have tried. Most of them return gibberish.
attribValue.tostring returns {System.Byte[]}.
The above code (bitconverter.tostring) returns {BC-7D-60-D1-23-E3-E2-4B-86-A1-48-A4-2A-28-44-1E-00}.
I have another app that uses AxInterop.WMPLib and it returns {D1607DBC-E323-4BE2-86A1-48A42A28441E} as it should.
Any suggestions on what I might try?
Is there a way to determine what encoder was used?
Thank you
推荐答案
执行或不执行.没有尝试.
Do or Do not. There is no try.
请参阅: http://www.youtube.com/watch?v=q3hn6fFTxeo [ ^ ].
请看我对这个问题的评论.这是没有意义的,因为除了您之外,没有人知道将什么实际编码(序列化)为字节数组.这不是编程问题,应该在本论坛中提出,而是纯粹的重复. :-)
但是,当您提供一些间接信息和预期结果时,让我们尝试猜测可能是什么.编码值可能不是字符串.它可以是GUID,但不能为字符串形式.顺便说一句,您通常应该养成使用数据的习惯,而不是字符串表示形式.因此,假设这是GUID,您可以尝试使用BitConverter
的每个组件,使用方法,将字符数组反序列化为GUID. ,请参阅:System.Guid.Parse
,System.Guid.TryParse
,System.Guid.ParseExact
或System.Guid.TryParseExact
http://msdn.microsoft.com/en-us/library/system.guid.aspx [ ^ ],
http://msdn.microsoft.com/en-us/library/system.bitconverter.aspx [^ ].
如果可行,则应使用此GUID值.您只需要字符串即可将其显示在文本文件中,在屏幕上显示等.与其他任何数据一样,您将需要ToString
方法之一.
Please see: http://www.youtube.com/watch?v=q3hn6fFTxeo[^].
Please see my comment to the question. This is pointless, because no one except you knows what was actually encoded (serialized) as an array of byte. This is not a programming question, as it should be pose in this forum, but a pure rebus. :-)
However, as you provided some indirect information and the expected result, let''s try to guess what it could be. The encoded value was probably not a string. It could be GUID, but not in the string form. By the way, you should generally get a habit to work with data, not its string representation. So, assuming this is GUID, you could try to deserialize you array of chars as GUID, per component using BitConverter
using the methods , please see:System.Guid.Parse
, System.Guid.TryParse
, System.Guid.ParseExact
or System.Guid.TryParseExact
http://msdn.microsoft.com/en-us/library/system.guid.aspx[^],
http://msdn.microsoft.com/en-us/library/system.bitconverter.aspx[^].
If this works, you should just work with this GUID value. You only need string to present it in a text file, show on screen, etc. As with any other data, you would need one of ToString
methods.
这篇关于从system.byte []转换为字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!