【问题标题】:Adding 2 hexadecimals as strings添加 2 个十六进制作为字符串
【发布时间】:2016-06-27 17:38:42
【问题描述】:

说明

我正在尝试从 Steam 获取军团要塞 2 物品的贴花图片数据 http://forums.steampowered.com/forums/showthread.php?t=2695676

使用的数据

蒸汽库存物品属性 "attributes": [ { "defindex": 152, "value": 160020469, "float_value": 3.3154542658454145e-033 }, { "defindex": 227, "value": 142668139, "float_value": 7.7604768692394667e-034 }, { "defindex": 746, "value": 1065353216, "float_value": 1 }, { "defindex": 292, "value": 1115684864, "float_value": 64 }, { "defindex": 388, "value": 1115684864, "float_value": 64 } ]

我的脚本

`

function Function_BigDecimal_to_Hexadecimal_Converter($dec) {
    $hex = '';
    do {    
        $last = bcmod($dec, 16);
        $hex = dechex($last).$hex;
        $dec = bcdiv(bcsub($dec, $last), 16);
    } while($dec>0);
    return $hex;
}
function Function_BigHexadecimal_to_Decimal_Converter($hex) {
    $dec = 0;  $len = strlen($hex);
    for ($i = 1; $i <= $len; $i++) {  $dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i)))); }
    return $dec;
}

$hex1 = Function_BigDecimal_to_Hexadecimal_Converter('142668139' ); // data from defindex 227
$hex2 = Function_BigDecimal_to_Hexadecimal_Converter('160020469'); // data from defindex 152

echo 'hex1 ',$hex1,'<br>'; // = 880f16b
echo 'hex2 ',$hex2,'<br>'; // = 989b7f5


$hex_append =  $hex1.$hex2;
echo 'hex_append ',$hex_append,'<br>'; // = 880f16b989b7f5

$ugcid = Function_BigHexadecimal_to_Decimal_Converter($hex_append);
echo 'ugcid ',$ugcid,'<br>'; // = 38297187109156853

`

我的问题

预期的 ucid 值应该是 612754991346202613,而我得到了 38297187109156853

在这里,我正在反转此代码以从预期的答案中获取 hex_append

echo 'Reversed hex_append using expected answer '.Function_BigDecimal_to_Hexadecimal_Converter('612754991346202613');// = 880f16b0989b7f5

结论

hex_append 计算出的880f16b989b7f5 和反向答案880f16b0989b7f5 的差异是0
我该如何解决这个问题?
我猜有时在将 2 个十六进制作为字符串添加时需要添加 0。
仅针对该项目检测到此问题。

所有这些php代码都可以复制到一个php文件中并执行

【问题讨论】:

    标签: php hex


    【解决方案1】:

    答案:字符串必须有 18 个字符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-28
      • 2019-02-21
      • 2018-01-31
      • 2019-07-27
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      相关资源
      最近更新 更多