大端和小端值是否可移植?

2023-12-11

你好,我在小端和大端有一个小问题,我知道这个问题已经问过n次了,但我无法弄清楚以下几点

让我们取 int i=10 它以二进制存储为00000000 00000000 00000000 00001010在堆栈部分如下:-

00000000 |00000000 |00000000 |00001010   // In case of little endian
MSB-------------------------------------------LSB

大尾数

00001010 |00000000 |00000000 |00000000   // In case of in big endian
MSB-------------------------------------------LSB

在此情况下,小端和大端都会给出相同的输出 10 ?

那么这些小端和大端有什么用呢?


在我的面试中,我被要求实现可移植到所有大小系统的代码。我回复说:

编译器会自行执行,如果 int i=10 在小端字节序中,那么在大端字节序中它也是 10 作为输出

这个答案正确吗?


00000000 | 00000000 | 00000000 | 00001010 // big    endian

00001010 | 00000000 | 00000000 | 00000000 // little endian

数据是否以大端模式或小端模式存储通常仅在您尝试访问内存中变量的较小部分(通常通过指针)时才重要,例如尝试通过指针访问 32 位整数的最低有效字符。指向字符的指针或与字符数组的联合。问题的另一个示例是,如果您将文件中的数据直接读取到 32 位整数数组中,或者从 32 位整数数组中写入数据。文件中的数据通常也会以小端或大端模式存储。

据我所知,没有通用的编译时方法来确定CPU是在大端模式还是小端模式下运行(特定编译器可能对此有定义)。您可以使用 32 位整数的联合和大小为 4 的字符数组编写测试代码。然后将联合中的整数设置为 10,并检查联合字符数组 [0] 是否包含 10,这意味着小端模式,或者如果联合字符数组[3]包含10,则表示大端模式。确定 CPU 是处于小端模式还是大端模式的其他方法也是可能的。

一旦确定 cpu 处于小端模式还是大端模式,您就可以包含条件代码来处理这两种情况,例如与 32 位整数数组之间的文件 I/O。如果您希望文件数据处于大端模式,但您的 CPU 处于小端模式,则必须在写入文件之前或读取文件之后反转每个整数的字节。

您还可以编写代码序列以大端模式存储数据,而不管 CPU 模式如何。如果已经处于大端模式,则会浪费时间,但它适用于大端模式和小端模式:

char     buffer[256];
char *   ptr2char;
uint32_t uint32bit;
/* ... */
    ptr2char = buffer;    /* store uint32bit in big endian mode */
    *ptr2char++ = (uint32bit >> 24)&0xff;
    *ptr2char++ = (uint32bit >> 16)&0xff;
    *ptr2char++ = (uint32bit >>  8)&0xff;
    *ptr2char++ = (uint32bit      )&0xff;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大端和小端值是否可移植? 的相关文章

  • C# 中直接从 URL 获取图像尺寸

    我正在尝试使用以下代码直接从网络上获取图片的尺寸 string image http www hephaestusproject com csharp3 png byte imageData new WebClient DownloadDa
  • 如何使用最小起订量模拟私有只读 IList 属性

    我试图嘲笑这个列表 private readonly IList
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • 是否有可能将 *.pdb 文件包含到发布版本中以查看错误行号?

    我做了一个项目 所有设置都是默认的 当我在调试模式 构建配置 调试 下运行它并遇到异常时 它转储到我的自定义日志记录机制 其中包含错误行号 但是当我运行发布构建时 记录相同的异常 没有行号 只有方法抛出和记录调用堆栈 是否有可能在发布配置
  • JetBrains Rider 针对 4.5 框架,无法切换到 4.7

    基本上 当尝试添加不支持旧框架的 NuGet 包时 会出现错误 但是在项目配置中只有 4 5 可用 在项目创建过程中 不存在选择目标的选项 有什么方法可以正确配置它吗 I haven t found out how to set up NE
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • 如何在 ASP.NET Core 6.0 Web API 项目中启用 cors?

    在我的 ASP NET Core 6 0 Web API 项目中配置了 CORS 但预检请求收到 http 405 错误 换句话说 不允许使用 HTTP OPTION 看起来 cors 没有启用 我见过的例子config EnableCor
  • c 使用 lseek 以相反顺序复制文件

    我已经知道如何从一开始就将一个文件复制到另一个文件 但是我如何修改程序以按相反的顺序复制它 源文件应具有读取访问权限 目标文件应具有读写执行权限 我必须使用文件控制库 例如 FILE A File B should be ABCDEF FE
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • 确定相关词的编程方式?

    使用网络服务或软件库 我希望能够识别与词根相关的单词 例如 座位 和 安全带 共享词根 座位 但 西雅图 不会被视为匹配 简单的字符串比较对于这类事情似乎是不可行的 除了定义我自己的字典之外 是否有任何库或 Web 服务不仅可以返回单词定义
  • 如何解决文件被另一个进程使用的问题?

    我一直在 VS NET 2010 中调试 没有任何问题 但现在无法建造 我收到错误 Unable to copy file filename to bin Debug filename The process cannot access t
  • 在 Windows 上使用 C/C++ 开发时省略 msvcr100.dll?

    是否可以在 Windows 上使用 C C 进行开发而不链接到 msvcr100 dll 我知道这是 Windows 的标准 c 库 但我想知道如果我没有安装 Visual Studio 或 Redistributable 软件包 我的计算
  • 文本框中“结束编辑”的事件

    我正在 winform c 中使用文本框 并使用文本在数据库中进行查询 但每次文本更改时 我都需要不断查阅文本框的文本 因此 对于这些 我使用 KeyUp 但这个活动太慢了 文本框编辑完成后是否会触发任何事件 我考虑完成2个条件 控制失去焦
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com
  • C# 模式匹配

    我对 C 有点陌生 我正在寻找一个字符串匹配模式来执行以下操作 我有一个像这样的字符串 该书将在 唐宁街 11 号接待处 并将由主要医疗保健人员参加 我需要创建一个 span 标签来使用 startIndex 和 length 突出显示一些
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click

随机推荐

  • 从 JavaScript 中的图像读取像素数据会返回半透明像素的意外结果

    我正在 JavaScript 中从 png 文件读取 RGBA 数据 为此 我在画布上绘制图像并使用 getImageData 数据与我的预期不同 测试图像 https raw githubusercontent com FlorianLu
  • “无法获取文档,因为客户端处于离线状态”Firestore 模拟器出现 Firebase 错误

    编辑 我知道这是模拟器的问题 因为没有模拟器它也能正常工作 我正在关注一个Next js 课程我正在使用 Firebase 模拟器 它建议这样做 但没有教程 因为它非常简单 并且我正在尝试为用户从 firestore 读取一些数据 但它总是
  • iOS 中的 Opengl ES 1.x 发光效果

    我目前正在开发一款 iOS 游戏 现在我想要的是一个用opengl绘制任意发光和半透明椭圆的函数 这有点棘手 因为我使用的是 cocos2d 1 1 它不支持 opengl es 2 0 所以没有着色器 这是我所做的 首先是绘制挤出线的函数
  • 意外的无符号整数行为

    我在以下代码中遇到了这种意外的输出 其中我正在验证当所有位都设置为 1 时 short 和 int 类型的无符号形式的最大值 以十进制形式表示 include
  • TypeError: __array__() 采用 1 个位置参数,但给出了 2 个(图像分类 Keras)

    如何解决这个问题 我尝试过设置dtype None in the image img to array method import tensorflow as tf from tensorflow import keras from ten
  • 如何将曲面拟合到一组数据点并获得曲面方程

    乌班图 ROS 思维 Python程序 我正在尝试获取适合点云数据中的一组点的表面方程 数据来自激光雷达扫描仪 我在 rviz 中选择整个扫描的一部分 并获得该选择的坐标选定表面的图片 所选曲面并不总是如此线性 因为材质中可能存在轻微的曲线
  • 响应式方块网格

    我想知道如何创建一个布局响应方块 每个方格都会有垂直和水平对齐内容 具体示例如下 新解决方案 2022 自从写完这个答案以来 CSS 已经发生了变化 我们现在有几个属性可以大大简化方形网格的代码 The grid属性来处理网格布局 MDN
  • 调用Service的onDestroy()

    我想打电话 onDestroy android中的Service方法 我已经在互联网上搜索了很多 很多答案都像是如果 服务强制停止或以某种方式它的 onDestroy 将永远不会调用 但我真的需要知道服务何时停止 我的项目是关于音乐播放器的
  • 检查元素在 DOM 中是否可见

    有什么方法可以检查元素在纯 JS 无 jQuery 中是否可见 那么 给定一个 DOM 元素 我如何检查它是否可见 我试过 window getComputedStyle my element display 但它似乎不起作用 我想知道我应
  • 手机锁定时如何显示弹出活动或对话框?

    我试图在手机锁定时显示活动或对话框 我尝试过使用 WakeLock 但它不起作用 并且只有在手机解锁后我才能看到活动 执行此操作的正确方法是什么 要在不关闭键盘保护的情况下显示活动 请尝试以下操作 getWindow addFlags Wi
  • 设置 ProGuard 来混淆局部变量和参数

    我似乎找不到在被混淆的类的方法内部混淆局部变量的设置 这是我反编译的一个类的摘录 其中有一些明显缺失的部分 理想情况下 方法的参数和局部变量也将被混淆 public class eA extends gu private final gt
  • SKAction playSoundFileNamed 来自 Singleton

    我有几个级别都使用相同的音效 我没有在每个级别都使用相同的代码 而是将所有声音合并到一个单例类中 但是 当我从其他类运行该方法时 将其放在单例中不会播放声音 我没有任何错误或警告 当我在每个类中都有相同的代码时 我播放声音没有问题 问题 D
  • Mac 上的 Java 类路径是如何设置的?

    Mac 上的 Java 类路径是如何设置的 既然您用以下标签标记了问题tomcat 我假设您正在运行 Java Servlet Web 应用程序 在这种情况下 类路径覆盖了 JAR 文件 WEB INF libwebapp 的文件夹和所有类
  • Python:“NoneType”对象不可下标“错误[重复]

    这个问题在这里已经有答案了 我是 Python 数据库的新手 因此为了练习一些关键技能 我正在构建一个登录屏幕 将用户名和散列密码写入数据库 然后根据数据库中的内容检查用户的输入 但是 当尝试从数据库中提取用户名和密码并将其存储在变量中时
  • css 上的 Margin-Right 不起作用

    我在学校期间一直在搞编码 因为它是我在学校最感兴趣的事情 并且在学年的大部分时间里我一直在自学 Html Css 和 Js 我一直在重新创建学校的网站 但遇到了一些问题 我的 CSS Margin Right 命令不起作用 我一直在尝试集中
  • iOS:SDWebImageManager 不缓存图像

    我正在使用创建幻灯片UIImageView 并且图像链接位于数组中 所以当我这样做时 我了解到SDWebImageManager让我们只点击 URL 一次 然后它就会缓存图像以供以后使用 但我在应用程序中监视的是 我相信第一个图像已被缓存
  • 获取变量或参数的名称[重复]

    这个问题在这里已经有答案了 我想获取变量或参数的名称 例如 如果我有 var myInput input var nameOfVar GETNAME myInput gt nameOfVar should be myInput void t
  • Sqlldr 接受 1 种日期格式

    我有一个动态生成控制文件的sql脚本文件 它接受日期格式为 mm dd yyyy 的日期字段 sqlldr 正在从 csv 文件加载日期 但它也接受日期格式 例如 mm dd yyyy 或 mm dd yyyy 我如何让它只接受 MM DD
  • 为什么我的 Java try...catch 出现错误?

    我开始自学更多有关 Java 错误处理的知识 这是我的第一个程序 我尝试查看特定错误而不是使用catch Exception e 作为一个通用的包罗万象的catch 我正在删除一个文件并返回一条消息 表明该文件已成功删除或删除失败 如果删除
  • 大端和小端值是否可移植?

    你好 我在小端和大端有一个小问题 我知道这个问题已经问过n次了 但我无法弄清楚以下几点 让我们取 int i 10 它以二进制存储为00000000 00000000 00000000 00001010在堆栈部分如下 00000000 00