English 中文(简体)
中间和 C C 之间错误转换
原标题:Wrong converting between int and char and back in C#

可能我的问题很傻 但我很难把字符值转换成整数 然后再转换回来

问题是,我试图解密一个访问 DB 检索的字符组值。

这是我的代码

char chrVal =  M ;
int intVal = (int)chrVal; // Output 77  M 
// Now trying to encrypt using XOR
int encIntVal = intVal ^ 203; // Output 134  † 
// Convert back
char correct = (char)(encIntVal ^ 203); // Output  M  - CORRECT
char wrong = (char)( †  ^ 203); // Output WRONG value

事实上,当我使用加密 XOR 生成的英特值时,我就会得到正确的结果( M ) 。 相反,当我使用加密 XOR (这就是我在 DB 中拥有的) 的字符结果时,我得出错误的结果( 无法读取字符 ) 。

我试图使用不同的编码 但我不知道哪里出问题了

有什么建议吗?

最新更新

我发现问题可能在于ADO.NET OleDbDataReader, 因为(int)Cont.

所 待 养

字符 在 Windows 1252 代码页面中。 所以我得到一个字节, 其编码正确 。

byte[] byteVal = Encoding.GetEncoding(1252).GetBytes(dr["Sex"])
char correct = (char)(byteVal[0] ^ 203); // Output  M 

谢谢 谢谢

问题回答

\ 字符可以是前置字符,对于多个 Unicode 值来说,它不只一个。

我可以创建一个字体, 其中 A 将不只代表 65 个 ASCII 值, 而任何值或我也可以创建一个字体, 其中所有字符都是 A 。

就像你的情况一样 象你说的 134岁 和奥德说的8224岁一样

更多地强调 ASCII/ Unicode 值,而不是转换成字符时该值的外观。

您的问题在于 {{} is 8224, 而不是 134。 (@Oded提到这一点) 您可以使用 u0086 , 也就是134。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签