C#学习教程:Java代码——字节数组中的负字节转C#0,64,-32,-3};但是,在C#中,我不能在字节数组中使用负字节。我尝试将其转换为字节,但失败了。我能做些什么?谢谢!因为字节在C#中是无符号的。在Java中,字节是有符号的。FromByteStructureByte是一种不可变值类型,表示一个无符号整数,其值范围从0(由Byte.MinValue常量表示)到255(由Byte.MaxValue常量表示)FromPrimitiveDataTypes字节数据类型是8位有符号的二进制补码整数。它的最小值为-128,最大值为127我该怎么办?您可以在C#中使用sbyte,它表示8位有符号整数。SByte值类型表示一个整数,其值为负128到正127。sbytesb=newsbyte[]{59,55,79,1,0,64,-32,-3};为了接近java的一字节思想,使用sbyte:vardata=newsbyte[]{59,55,79,1,0,64,-32,-3};那么您可能还必须将其他变量更改为sbyte。在Java中,字节是有符号的,而在C#中,字节是无符号的。您可以通过向数字添加256将有符号从有符号转换为无符号,这样(在您的示例中)-32变为224,-3变为253。正如IchabodClay所说(在评论中),您也可以使用sbyte类型您不必进行转换。我个人不喜欢带符号的字节,所以如果这是文字数据,我只需转换一次即可完成,但您可以选择。伟大的。?通常,您可以简单地将有符号转换为无符号,然后再转换回来。大多数时候,你仍然对字节的位值感兴趣。它们在两个系统中保持不变(因为已经定义了补码符号数)。现在,如果你向上转换为一个使用更多位的值,并且你想转换为一个无符号正数,你只需使用按位与,使用1位作为你需要的位数。在C#中,您可以使用intnegInt=(sbyte)b;byteanotherB=(byte)negInt;在Java中使用:intposInt=b&0xFF;byteanotherB=(byte)posInt;当你需要字节值作为数字时,你可以使用这样的函数。否则,您只需将这些位存储在一个字节数组中——有符号或无符号。此方法也适用于整个字节数组的规范-正如您在C#示例中使用的那样:newbyte[]{59,55,79,1,0,64,(byte)-32,(byte)-3};甚至newbyte[]{(byte)59,(byte)55,(byte)79,(byte)1,(byte)0,(byte)64,(byte)-32,(byte)-3};如果您使用C#,您可能需要添加unchecked()。Java也是如此:newbyte[]{(byte)255,etc.}对于这个转换,你不妨学习如何在你喜欢的编辑器中使用正则表达式来查找/替换。最后,需要尝试一些转换和按位AND来感受它。一旦你了解它,它就永远不会离开你。以上就是C#学习教程的全部内容:Java代码-字节数组中的负字节转C#分享。如果对大家有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处:
