Convert byte array to int

前端 未结 4 1115
既然无缘
既然无缘 2021-01-04 18:03

I am trying to do some conversion in C#, and I am not sure how to do this:

private int byteArray2Int(byte[] bytes)
{
    // bytes = new byte[] {0x01, 0x03, 0         


        
相关标签:
4条回答
  • 2021-01-04 18:33
    byte[] bytes = { 0, 0, 0, 25 };
    
    // If the system architecture is little-endian (that is, little end first), 
    // reverse the byte array. 
    if (BitConverter.IsLittleEndian)
      Array.Reverse(bytes);
    
    int i = BitConverter.ToInt32(bytes, 0);
    Console.WriteLine("int: {0}", i);
    
    0 讨论(0)
  • 2021-01-04 18:33
    1. this is correct, but you're missing, that Convert.ToInt32 'wants' 32 bits (32/8 = 4 bytes) of information to make a conversion, so you cannot convert just One byte: `new byte [] {0x32}

    2. absolutely the the same trouble you have. and do not forget about the encoding you use: from encoding to encoding you have 'different byte count per symbol'

    0 讨论(0)
  • 2021-01-04 18:50

    BitConverter is the correct approach.

    Your problem is because you only provided 8 bits when you promised 32. Try instead a valid 32-bit number in the array, such as new byte[] { 0x32, 0, 0, 0 }.

    If you want an arbitrary length array converted, you can implement this yourself:

    ulong ConvertLittleEndian(byte[] array)
    {
        int pos = 0;
        ulong result = 0;
        foreach (byte by in array) {
            result |= ((ulong)by) << pos;
            pos += 8;
        }
        return result;
    }
    

    It's not clear what the second part of your question (involving strings) is supposed to produce, but I guess you want hex digits? BitConverter can help with that too, as described in an earlier question.

    0 讨论(0)
  • 2021-01-04 18:57

    A fast and simple way of doing this is just to copy the bytes to an integer using Buffer.BlockCopy:

    UInt32[] pos = new UInt32[1];
    byte[] stack = ...
    Buffer.BlockCopy(stack, 0, pos, 0, 4);
    

    This has the added benefit of being able to parse numerous integers into an array just by manipulating offsets..

    0 讨论(0)
提交回复
热议问题