将 SteamID64 转换为 SteamID

Clu*_*s18 0 php steam-web-api steam

我正在寻找一种方法,可以在 PHP 中获取 SteamID64 (76561198032122624) 并将其转换为 SteamID (STEAM_0:0:35928448)。我已经搜索了很多,但我无法找到如何做到这一点。我几乎可以肯定这是可能的,因为诸如 steamid.io 之类的网站能够找到它,但我不知道如何找到它。

Luk*_*keH 6

您需要的所有信息都在Valve 的 SteamID wiki 页面上:

传统格式

当以文本形式表示时,Steam ID 遵循相当简单的格式:“STEAM_X:Y:Z”,其中 X、Y 和 Z 是整数。

  • X代表steam账号所属的“宇宙”。如果“X”为 0,则这是宇宙 1(公共)。
  • Y 是帐户 ID 的最低位。因此,Y 要么是 0,要么是 1。
  • Z 是 Account ID 的最高 31 位。

作为 64 位整数

给定 Steam ID 的组成部分,Steam ID 可以转换为它的 64 位整数形式,如下所示:

(( Universe << 56) | ( Account Type << 52) | ( Instance << 32) | Account ID )

我的 PHP非常生疏,但这里有一些(未经测试的)伪代码,大致可以满足要求:

var steamId64 = 76561198032122624;

var universe = (steamId64 >> 56) & 0xFF;
if (universe == 1) universe = 0;

var accountIdLowBit = steamId64 & 1;

var accountIdHighBits = (steamId64 >> 1) & 0x7FFFFFF;

// should hopefully produce "STEAM_0:0:35928448"
var legacySteamId = "STEAM_" + universe + ":" + accountIdLowBit + ":" + accountIdHighBits;
Run Code Online (Sandbox Code Playgroud)