将三个整数编码为单个整数

2024-02-13

我必须将 3 个数字编码为同一个整数。

我有这 3 个测量值

uint256 carLength;
uint256 carWidth;
uint256 carDepth;

我想将这 3 个数字编码为同一个整数,并且可以解码。我的问题是我在这么低的水平上经验不足。

我想到这样的功能

function encodeNumbers(uint256 a, uint256 b, uint256 c) public view returns(uint256);

function decodeNumber(uint256) public view returns (uint256, uint256, uint256);

有关如何进行的建议?


如果你把每一个a,b,c要成为 32 位(4 个字节,或大多数语言中的标准 int),您可以通过一些简单的位移来实现。

pragma solidity 0.4.24;

contract Test {
    function encodeNumbers(uint256 a, uint256 b, uint256 c) public view returns(uint256 encoded) {
        encoded |= (a << 64);
        encoded |= (b << 32);
        encoded |= (c);
        return encoded;
    }

    function decodeNumber(uint256 encoded) public view returns (uint256 a, uint256 b, uint256 c) {
        a = encoded >> 64;
        b = (encoded << 192) >> 224;
        c = (encoded << 224) >> 224;
        return;
    }


}

编码时,我们只需将数字移动到连续的 32 位部分即可。解码时,我们做相反的事情。然而,在 b 和 c 的情况下,我们需要先左移,然后右移,以清除其他数字。

uint256顾名思义,实际上有 256 位,因此如果您确实需要的话,实际上可以在其中容纳 3 个数字,每个数字最多 85 位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将三个整数编码为单个整数 的相关文章

随机推荐

  • 相当于“pip”的“package.json”和“package-lock.json”

    包管理器JavaScript like npm and yarn use a package json指定 顶级 依赖项 并创建一个锁定文件 https docs npmjs com files package locks跟踪特定版本all
  • 使用 dplyr::filter() 删除 NA 观测值

    我的数据如下所示 library tidyverse df lt tribble a b c 1 2 3 1 NA 3 NA 2 3 我可以删除所有NA观察与drop na df gt drop na 或者全部删除NA单列中的观察值 a例如
  • 调用 Isolate::New() 后执行位置 0x0000000000000000 时发生访问冲突

    我似乎无法弄清楚如何启动 V8 我有这个代码 if V8Initialized v8 V8 InitializeICU v8 V8 InitializeExternalStartupData x86 this loads ok I chec
  • HTML5可以指定滚动条图像吗?

    我需要显示自定义滚动条 如果可能的话 我想避免使用 jQuery 插件 那么我可以用 HTML5 和 CSS3 来做这样的事情吗 myScrollableBox width 200px height 500px Display scroll
  • 如何根据草图值计算 TextView 的 letterSpacing?

    在设计中 我有一个文本字段 文本大小为 16 字符间距为 0 6 但是 如果我设置这个值android letterSpacing的属性TextView间距将比设计时大得多 那么 将sketch值转换为android值的方法是什么呢 根据
  • 动态调整 SVG 多边形的大小和拖动

    我正在努力寻找一种用鼠标动态调整 svg 多边形大小和拖动多边形的方法 不幸的是 jQueryUi 不适用于 svg 元素 我还检查了拉斐尔库 但找不到任何有关如何实现这一点的文档 片段 除了使用 SVG 之外 还有其他方法可以动态调整多边
  • Julia 中的虚拟变量

    在 R 中 有一个很好的功能 可以针对分类变量的每个级别使用虚拟变量运行回归 例如自动将 R 因子扩展为每个因子水平的 1 0 指标变量的集合 https stackoverflow com questions 5048638 automa
  • 使用 jquery 获取自定义标签值

  • 在 pandasql 中使用字典值

    我有一本字典 其中包含值的数据帧 如下所示 mydict demand demand df supply supply df prod prod df 然后我正在使用pandasql模块来执行简单的查询 query SELECT FROM
  • Linux 变量 $BASH_SUBSHELL 与 $SLVL 之间的区别

    我对两者感到困惑 虽然 BASH SUBSHELL 内部变量指示子 shell 的嵌套级别 但 SLVL 变量显示子 shell 内没有任何更改 它究竟意味着什么 如果我在另一个 shell 中打开一个 shell 则 SLVL 的值会增加
  • 如何通过 Spring 发送电子邮件

    在我的 JavaFx 项目中 我像这样注入控制器 效果很好 Configuration public class AppFactory Bean public HomeController homeController throws IOE
  • 从数据库恢复 TeamCity 项目

    是否可以从现有数据库恢复 TeamCity 项目设置 我为 TeamCity 数据层和应用程序层设置了单独的服务器 TeamCity 应用程序服务器已损坏 我正在尝试从现有数据层恢复它 我正在使用 TeamCity 5 1 2 有任何想法吗
  • javascript中一串一位数字的总和?

    我正在尝试编写一个脚本 添加字符串的左侧并根据右侧对其进行验证 例如 var left 12345 var right 34567 我需要执行某种求和函数 将 1 2 3 4 5 加起来 并检查它是否等于 3 4 5 6 7 我只是不知道该
  • MultipartEntityBuilder 将图片发送到 Rail 服务器

    我正在尝试发送MultipartEntityBuilder 到我的 Rails 服务器 但是 当我尝试构建它时 它崩溃并给出错误 03 25 09 44 50 001 W System err java util concurrent Ex
  • TWRequest 是否适用于 Twitter 流 API?

    我正在尝试制作一个基本的 iPhone 应用程序来显示附近的推文 我使用 TWRequest 对象通过 twitter 搜索 API 来完成此任务 不幸的是 我实际上想使用 GPS 坐标在地图上标记推文 而搜索 api 似乎不会以比城市名称
  • 错误:android studio 中的任务“:app:dexDebug”执行失败

    我面临未知类型的错误 错误 任务 app dexDebug 执行失败 com android ide common process ProcessException org gradle process internal ExecExcep
  • jQuery 函数

    像这样编写 jQuery 函数有什么用 function myFunction 我的意思是为什么将函数包装在 中 我认为你的意思是这样的 function 这是以下内容的简写 document ready function 它的作用是注册一
  • 如何使“.innerText”忽略不可见元素的不可见子元素?

    测试代码结果如下 div 0 innerText aaaaa zzzzz div 1 innerText aaaaa invisible zzzzz 我怎样才能强迫innerText给出相同的结果div 1 因为它给出了div 0 我尝试附
  • 如何在 Ember CLI 应用程序中升级 Ember 版本?

    假设我上周创建了这个 Ember 应用程序 ember new shop cd shop ember install addon ember cli scaffold ember g scaffold product name string
  • 将三个整数编码为单个整数

    我必须将 3 个数字编码为同一个整数 我有这 3 个测量值 uint256 carLength uint256 carWidth uint256 carDepth 我想将这 3 个数字编码为同一个整数 并且可以解码 我的问题是我在这么低的水