为什么我必须在左移之前将 `uint8_t` 转换为 `uint64_t` ?

2024-01-31

我只想将 uint8_t 数组连接到 uint64_t。事实上,我解决了我的问题,但需要了解原因。这是我的代码;

    uint8_t byte_array[5];

    byte_array[0] = 0x41;
    byte_array[1] = 0x42;
    byte_array[2] = 0x43;
    byte_array[3] = 0x44;
    byte_array[4] = 0x45;

    cout << "index 0: " << byte_array[0] << " index 1: " << byte_array[1] << " index 2: " << byte_array[2] << " index 3: " << byte_array[3] << " index 4: " << byte_array[4] << endl;

    /* This does not work */
    uint64_t reverse_of_value = (byte_array[0] & 0xff) | ((byte_array[1] & 0xff) << 8) | ((byte_array[2] & 0xff) << 16) | ((byte_array[3] & 0xff) << 24) | ((byte_array[4] & 0xff) << 32);

    cout << reverse_of_value << endl;

    /* this works fine */
    reverse_of_value = (uint64_t)(byte_array[0] & 0xff) | ((uint64_t)(byte_array[1] & 0xff) << 8) | ((uint64_t)(byte_array[2] & 0xff) << 16) | ((uint64_t)(byte_array[3] & 0xff) << 24) | ((uint64_t)(byte_array[4] & 0xff) << 32);

    cout << reverse_of_value << endl;

第一个输出将是“44434245”,第二个输出将是“4544434241”,这就是我想要的。

因此,正如我们所看到的,当我使用将每个字节转换为 uint64_t 代码时,代码可以工作,但是,如果我不使用转换,则会给出不相关的结果。有人能解释一下原因吗?


左移 auint8_t这么多位不一定能起作用。左侧操作数将提升为int,你不知道其宽度。它could已经是 64 位了,但也可能是 32 位甚至 16 位,在这种情况下……结果会去哪里?没有足够的空间容纳它!您的代码稍后将结果放入uint64_t:表达式是单独计算的。

您已在第二个版本中正确修复了该问题,方法是转换为uint64_t before发生左移。在这种情况下,表达式肯定会具有所需的行为。

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

为什么我必须在左移之前将 `uint8_t` 转换为 `uint64_t` ? 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif

随机推荐

  • Spark 中的潜在狄利克雷分配 (LDA) - 复制模型

    我想从 pyspark ml clustering 包中保存 LDA 模型 并在保存后将该模型应用于训练和测试数据集 然而 尽管设定了种子 结果还是存在差异 我的代码如下 1 导入包 from pyspark ml clustering i
  • 如何在钛合金中画一条线?

    如何在 Android 和 iPhone 上都适用的 Titanium 中绘制一条线 为了创建一条线 我使用 var view Ti UI createView height 180 width 300 var line Ti UI cre
  • 不可作弊的 Google Fit 计步器

    我有一个问题要向 Google Fit 咨询 我正在创建一个计步器 哦 奇怪g 到目前为止我已经做到了这一点 而且并不难 但现在我们来谈谈我的问题 我只是阅读传感器 API 的步骤 问题是 我可以通过 Google Fit 应用程序添加新数
  • Git 删除推送的提交

    我在我的项目中使用 git 存储库 我不小心推送了 2 个我不应该提交的提交 在这两者之间 有人已经承诺了这一点 是否可以删除我推送的提交 或者我必须删除我的代码更改并将其作为新提交推送 因为有人已经在其之上提交了 Git 主分支 由我提交
  • 我应该将 Google 的 JSON-LD 结构化数据放在哪里?

    我正在尝试创建谷歌的结构化数据 但不知道我在做什么 我将其设置为一个组织 然后对我的所有产品使用 SD 标记工具 我将每个 JSON LD 产品直接从标记工具与嵌套放入其自己的脚本标签中 然后我将其放入服务器上的 js 文件中 我将其与此链
  • 为什么我不能在 HTML 中使用名为“evaluate”的 JS 函数?

    我有点好奇为什么这不起作用 JavaScript function evaluate console log 42 HTML a Click Me a evaluate 是 html 一侧的保留关键字吗 document evaluate解
  • ASP.NET CodeFileBaseClass 属性与从 System.Web.UI.Page 继承

    我刚刚通过继承为我的页面创建了一个基类System Web UI Page public abstract class PageBase System Web UI Page 当我注意到您还可以在 ASP NET 视图中声明基页时 有人可以
  • 使用GL着色器语言的相机帧yuv到rgb转换

    我从字节数组中的 android 相机预览回调获取相机帧并将其传递给 jni 代码 由于我们不能在 C 中使用字节 因此我将其转换为整数数组 如下所示 JNIEXPORT void JNICALL Java com omobio armad
  • 将现有记录详细信息发送到新记录以节省时间 - “我也做了这个锻炼”

    我创建了一个 Ruby on Rails 应用程序 用户可以在其中记录和分享他们的锻炼情况 我想知道如何允许用户 克隆 锻炼 可以节省复制和粘贴或自己输入锻炼所需的时间 我的想法是 当当前用户看到他们也做过的锻炼 即 100 个俯卧撑 10
  • Mercurial Hg-Git:从本地目录克隆?

    我的计算机上有一个本地 Git 存储库 我正在尝试使用它进行克隆Hg Git http hg git github com 当我从一个克隆时 它对我来说效果很好git 键入路径 但如果我尝试从本地目录克隆 则不会 这是一个例子 hg clo
  • 未找到 ID 为“com.google.gms.google-services”的插件

    我已经关注了这个link https firebase google com docs admob android quick start将广告集成到我的应用程序中 但它显示了这个错误 这是我的 build gradle apply plu
  • Flask-sqlalchemy 从数据库视图给出空结果

    我有型号 from flask ext sqlalchemy import SQLAlchemy db SQLAlchemy class Graph db Model tablename graph view group Column Un
  • 引导顺序不正确

    好的 我有一个 GUIDf5cc4100 f1b4 4af6 9e9e 224b0eb74166我使用 ADO NET 连接器将其插入 MySQL 数据库 我可以通过两种方式做到这一点 1 将字节数组馈送到 NET Connector st
  • 如果在finalize()期间抛出异常会发生什么

    如果finalize 执行过程中抛出异常会发生什么 堆栈展开是否像平常一样 它会继续finalize 并忽略异常吗 它会停止 Finalize 并继续 GC 对象吗 或者是其他东西 我不是在寻找使用 Finalize 的指南 有很多页面对此
  • 可以比较 mongodb 中的日期字符串吗?

    我有一个包含具有日期属性的文档的集合 如下所示 title whatever created ISODate 2013 05 27T03 36 50Z 我想选择在某一天创建的记录 我希望我能用toDateString 并比较这些值 但是当我
  • 通过拆分将 pandas DataFrame 从宽变为长

    我正在尝试将以下数据从宽格式重塑为长格式 df pd DataFrame size Ent pd Timestamp 2021 01 01 00 00 00 600 pd Timestamp 2021 01 02 00 00 00 930
  • STS Spring 与 Roo 和 Maven - 太慢?

    我有一段时间使用 STS 和 Java 来开发 Web 应用程序 该项目配置为使用 Maven Roo 和 MySQL 作为数据库 我经常发现我在以下情况中浪费了很多时间 没有Roo回应 当我修改域对象 Java 类时 即使项目的 Roo
  • 机器学习、人工智能和软计算

    这三个密切相关的领域有什么区别 是否存在一个特定的整体 它们都是其中的一部分 除了 CS 人工智能是试图在计算机中捕获人类智能的各个方面的智力项目 另一个项目也称为人工智能 旨在使用受人类启发的算法来解决传统上棘手的问题 人工智能可以说涵盖
  • 如何用python实现Leaky Relu的导数?

    在不使用 Tensorflow 的情况下 如何在 Python 中实现 Leaky ReLU 的导数 还有比这更好的方法吗 我希望该函数返回一个 numpy 数组 def dlrelu x alpha 01 return alpha if
  • 为什么我必须在左移之前将 `uint8_t` 转换为 `uint64_t` ?

    我只想将 uint8 t 数组连接到 uint64 t 事实上 我解决了我的问题 但需要了解原因 这是我的代码 uint8 t byte array 5 byte array 0 0x41 byte array 1 0x42 byte ar