gpt4 book ai didi

php - Golang - 有 bcadd/bcsub 包吗?

转载 作者:IT王子 更新时间:2023-10-29 02:23:21 28 4
gpt4 key购买 nike

golang有没有类似PHP函数的包bcsub , bcadd等等?

我正在尝试将以下函数从 php 编写到 golang。

function convertToSteamID($communityID) {
// See if the second number in the steamid (the auth server) is 0 or 1. Odd is 1, even is 0
$authserver = bcsub($communityID, '76561197960265728') & 1;
// Get the third number of the steamid
$authid = (bcsub($communityID, '76561197960265728')-$authserver)/2;
// Concatenate the STEAM_ prefix and the first number, which is always 0, as well as colons with the other two numbers
return "STEAM_0:$authserver:$authid";
}

最佳答案

您可以使用 big.Int 来做到这一点:

var (
magic, _ = new(big.Int).SetString("76561197960265728", 10)
one = big.NewInt(1)
two = big.NewInt(2)
)

func commIDToSteamID(ids string) string {
id, _ := new(big.Int).SetString(ids, 10)
id = id.Sub(id, magic)
isServer := new(big.Int).And(id, one)
id = id.Sub(id, isServer)
id = id.Div(id, two)
return "STEAM_0:" + isServer.String() + ":" + id.String()
}

func steamIDToCommID(ids string) string {
p := strings.Split(ids, ":")
id, _ := new(big.Int).SetString(p[2], 10)
id = id.Mul(id, two)
id = id.Add(id, magic)
auth, _ := new(big.Int).SetString(p[1], 10)
return id.Add(id, auth).String()
}

playground

  • 编辑:同时添加了反向功能

关于php - Golang - 有 bcadd/bcsub 包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368343/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com