int intValue = int.Parse(hexString.ToString(), NumberStyles.AllowHexSpecific); 我得到一个正的intValue。但是,intValue应该是为负值。任何帮助将不胜感激。 JTNeed some help in converting a byte[] to a signed int. This is what Ihave attempted to do:byte[] bytes = new byte[3] { 0xFF, 0xFF, 0x9C};StringBuilder hexString = new StringBuilder();foreach (byte tmpByte in bytes) hexString.Append(tmpByte.ToString("X2"));int intValue = int.Parse(hexString.ToString(),NumberStyles.AllowHexSpecific);I am getting a positive intValue. However, the intValue is supposed tobe a negative value. Any help would be greatly appreciated.JT推荐答案我看不出为什么你期待负面价值。 [BASE16] FFFF9C = [BASE10] 16777116 - 问候, DennisJDMyrén Oslo Kodebureau " JT" < jt@jt.jt>在消息中写道 新闻:OF ************** @ TK2MSFTNGP09.phx.gbl ...I cannot see why you are expecting a negative value.[BASE16] FFFF9C = [BASE10] 16777116--Regards,Dennis JD MyrénOslo Kodebureau"JT" <jt@jt.jt> wrote in messagenews:OF**************@TK2MSFTNGP09.phx.gbl...在转换中需要一些帮助一个byte []到一个signed int。这就是我试图做的事情: byte [] bytes = new byte [3] {0xFF,0xFF,0x9C}; StringBuilder hexString = new StringBuilder() ; foreach(byte tmpByte,以字节为单位)hexString.Append(tmpByte.ToString(" X2")); int intValue = int.Parse(hexString.ToString(), NumberStyles.AllowHexSpecific); 我得到一个积极的intValue。但是,intValue应该是负值。任何帮助将不胜感激。 JT Need some help in converting a byte[] to a signed int. This is what I have attempted to do: byte[] bytes = new byte[3] { 0xFF, 0xFF, 0x9C}; StringBuilder hexString = new StringBuilder(); foreach (byte tmpByte in bytes) hexString.Append(tmpByte.ToString("X2")); int intValue = int.Parse(hexString.ToString(), NumberStyles.AllowHexSpecific); I am getting a positive intValue. However, the intValue is supposed to be a negative value. Any help would be greatly appreciated. JT对不起,我应该更多地解释我的情况。我从连接到串行端口的设备获得了一些 字节。设备显示一个 负值,我得到的值为FFFF9C。 此外,API文档说明字节是Big-Endian。在 这种情况下,FFFF9C会转换为某个负整数值吗? DennisMyrén写道:Sorry, I should explained my situation abit more. I am getting somebytes from a device connected to the serial port. The device displays anegative value and the bytes I am getting for the value is FFFF9C.Also, the API documentation says that the bytes are in Big-Endian. Inthis case, would FFFF9C translate to some negative integer value?Dennis Myrén wrote: I无法理解为什么你期望负值。 [BASE16] FFFF9C = [BASE10] 16777116 I cannot see why you are expecting a negative value. [BASE16] FFFF9C = [BASE10] 16777116 JT< jt@jt.jt> ;写道:JT <jt@jt.jt> wrote:在将byte []转换为signed int时需要一些帮助。这就是我试图做的事情: byte [] bytes = new byte [3] {0xFF,0xFF,0x9C}; StringBuilder hexString = new StringBuilder() ; foreach(byte tmpByte,以字节为单位)hexString.Append(tmpByte.ToString(" X2")); int intValue = int.Parse(hexString.ToString(), NumberStyles.AllowHexSpecific); 我得到一个积极的intValue。但是,intValue应该是负值。任何帮助将不胜感激。 Need some help in converting a byte[] to a signed int. This is what I have attempted to do: byte[] bytes = new byte[3] { 0xFF, 0xFF, 0x9C}; StringBuilder hexString = new StringBuilder(); foreach (byte tmpByte in bytes) hexString.Append(tmpByte.ToString("X2")); int intValue = int.Parse(hexString.ToString(), NumberStyles.AllowHexSpecific); I am getting a positive intValue. However, the intValue is supposed to be a negative value. Any help would be greatly appreciated. 24位签名int是非常罕见的 - 你真的是指它只有 3字节而不是4? 您可以使用BitConverter进行转换,而无需使用字符串 格式。如果这是错误的字节顺序,你可以使用我的 EndianBitConverter来自 http://www.pobox.com/~skeet/csharp/miscutil - Jon Skeet - < sk *** @ pobox.com> http ://www.pobox.com/~skeet 如果回复小组,请不要给我发邮件A 24-bit signed int is quite rare - did you really mean it to only have3 bytes rather than 4?You can use BitConverter to do the conversion without using a stringformat. If that''s the wrong endianness, you can use myEndianBitConverter from http://www.pobox.com/~skeet/csharp/miscutil--Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeetIf replying to the group, please do not mail me too 这篇关于将byte []转换为signed int的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!