在后台将字节转换为INT64

时间:2018-12-12 11:38:58

标签: c# byte data-conversion

美好的一天。对于当前项目,我需要知道如何将数据类型表示为字节。例如,如果我使用:

long three = 500;var bytes = BitConverter.GetBytes(three);

我得到的值是244,1,0,0,0,0,0,0。我得到它是一个64位值,并且8位变为int位,因此有8个字节。但是244和1个化妆500怎么办?我尝试了谷歌搜索,但是我得到的只是使用BitConverter。我需要知道位转换器在幕后的工作方式。如果有人可以将我指向某篇文章或解释这些东西是如何工作的,将不胜感激。

2 个答案:

答案 0 :(得分:0)

这很简单。

BitConverter.GetBytes((long)1); // {1,0,0,0,0,0,0,0};
BitConverter.GetBytes((long)10); // {10,0,0,0,0,0,0,0};
BitConverter.GetBytes((long)100); // {100,0,0,0,0,0,0,0};
BitConverter.GetBytes((long)255); // {255,0,0,0,0,0,0,0};
BitConverter.GetBytes((long)256); // {0,1,0,0,0,0,0,0}; this 1 is 256
BitConverter.GetBytes((long)500); // {244,1,0,0,0,0,0,0}; this is yours 500 = 244 + 1 * 256

如果您需要源代码,则应检查Microsoft GitHub,因为实现是开源的:) https://github.com/dotnet

答案 1 :(得分:-1)

来自source code

// Converts a long into an array of bytes with length 
// eight.
[System.Security.SecuritySafeCritical]  // auto-generated
public unsafe static byte[] GetBytes(long value)
{
    Contract.Ensures(Contract.Result<byte[]>() != null);
    Contract.Ensures(Contract.Result<byte[]>().Length == 8);

    byte[] bytes = new byte[8];
    fixed(byte* b = bytes)
        *((long*)b) = value;
    return bytes;
}