C# の場合
var buffer = new byte[] {71, 20, 0, 0, 9, 0, 0, 0};
var g = (ulong) ((uint) (buffer[0] | buffer[1] << 8 | buffer[2] << 16 | buffer[3] << 24) |
(long) (buffer[4] | buffer[5] << 8 | buffer[6] << 16 | buffer[7] << 24) << 32);
C++ の場合
#define byte unsigned char
#define uint unsigned int
#define ulong unsigned long long
byte buffer[8] = {71, 20, 0, 0, 9, 0, 0, 0};
ulong g = (ulong) ((uint) (buffer[0] | buffer[1] << 8 | buffer[2] << 16 | buffer[3] << 24) |
(long) (buffer[4] | buffer[5] << 8 | buffer[6] << 16 | buffer[7] << 24) << 32);
C# 出力38654710855
、C++ 出力5199
。
なんで?私はこれについて何時間も頭を悩ませてきました...
編集:C#には正しい出力があります。
みんな助けてくれてありがとう:)ジャックエイドリーの答えが最初だったので、それを受け入れられた答えとしてマークします。他の回答も正解でしたが、複数回答はできません :\