c语言 字节转换成位,C语言中的字节序和指针转换

我在计算机上用以下代码部分编写了一个C程序:

uint32_t test = 0x01020304;

uint8_t array[4];

memcpy(array, &test, 4);

printf("%02x %02x %02x %02x

",array[0], array[1], array[2], array[3]);

它打印04030201,但我希望是01020304。

我是否必须得出结论,我使用的机器具有一点字节顺序架构?

是的你应该。

是的,最近的许多CPU(Intel)中都使用little endian。

顺便说一句,memcpy参数的强制转换是不必要的。

@ PeterA.Schneider在没有演员表的情况下得到警告:warning: passing argument 2 of ‘memcpy’ makes pointer from integer without a cast [-Wint-conversion]

在C ++程序中以编程方式检测字节序的可能重复项

@ Raoul722-当您看到该警告时,您的代码是memcpy(array, test, 4);还是memcpy(array, &test, 4);(注意第二个&)? 第二个示例是正确的,不应警告您。

编译器不应发出警告(gcc 4.9.3不会)。 也许您不经意间删除了&演员?

@ PeterA.Schneider确实,与符号已被删除。 谢谢你的提示!

正如Mohit所说,是的:输出显示最低有效位在内存的较低地址,或"小端优先"。或"小尾数"。

这可能有些令人困惑,尤其是对于从左到右书写和阅读的西方人。我只能怀疑读写希伯来语或阿拉伯语的人会感到困惑。

结果之一是,移位运算符以它们似乎指示的相反的"方向"工作。

关于字节顺序的优缺点已经有很多争论。最后,这无关紧要,当然,C的一项重大成就就是从具体体系结构中抽象出足以平滑差异并使程序具有可移植性(但又不能阻止对位和字节的访问)。

在使用小字节序的情况下,字节中的位仍然从右到左递增(我们写它们的方式),而字节从左到右递增(如果我们写更高的地址),这有点不直观。

另外,互联网字节顺序为Big Endian,因此使用htonl()和朋友很重要。 (请不要重新实现这些功能。)

小尾数字节顺序的一个不错的特性是,无论您在存储单元中采用哪种数据类型,小值都是相同的。如果您将32的int值23写入地址x并稍后以char形式读取,则为23;在大字节序的计算机上,该值为0。

根据字节顺序,移位运算符不会给出不同的结果。 例如,a << n被指定为提供与a乘以2,n倍相同的值。 在某些情况下,移位会带来不确定的/未指定的行为,但这与字节序无关。 也有中端机和混合端机。

@Peter完全正确。 这就是为什么<

Do I have to conclude that the machine on which I work has a little endian architecture?

是。

考虑以与字节序无关的方式复制和打印数据:

#include

#include

#include

#include

int main ()

{

uint32_t test = 0x01020304;

uint8_t array[4];

for(size_t i=0; i

{

size_t shift = 8 * (sizeof(uint32_t) - 1 - i);

array[i] = (test >> shift) & 0xFF;

printf("%.2" PRIx8"", array[i]);

}

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言顺序结构程序设计PPT,C语言习题集与实验指导 教学课件 伍鹏、杜红、王圆妹、邓绍金 第3章 顺序结构程序设计.pdf...

[摘要]第3章 顺序结构程序设计 第3章 顺序结构程序设计 当你对C语言程序设计有了一定了解和掌握后&#xff0c; 在处理一些简单的任务时&#xff0c;若想根据程序书写的过程 顺序执行程序&#xff0c;这时应该如何处理呢&#xff1f; •顺序结构 •顺序结构 程序的三种结构 程序…

c语言调用exe并传递参数,如何使用execlp将命令行参数传递给C程序

This page包括大量的使用示例....编辑&#xff1a;从链接 从链路的代码段添加的代码片段上方static void show_info_page(const char *git_cmd){const char *page cmd_to_page(git_cmd);setenv("INFOPATH", system_path(GIT_INFO_PATH), 1);execlp("info"…

c语言include math.h,在C语言中,若需调用数学类库函数第数据进行处理,则需包含头文件______. 答案:math.h;#includemath.h;math.h;“math....

相关问题设随机变量X的密度函数为&#xff0c;则c .e339fd828a3e5af974ac21fd9ebc7f0b.gif有函数f(x,y,z)&#xff0c;其中x∈[1900,2100]&#xff0c;y∈[1,12]&#xff0c;z∈[1,31]的。请写出该函数采用边界值分析法设计的测试用例函数重写与函数重载的相同之处是&#xff1…

c语言sin函数返回nan,C语言入口函数和LD_PRELOAD环境变量

零.C语言入口函数从第一天学习C语言开始,我们的脑子里就深深烙下这样一个概念:C语言程序总是从main()函数开始执行,main()函数结束,程序也就结束了.在平时的练习中貌似这没有问题,但事实真的是这样吗?测试一下,点击(此处)折叠或打开#include #include #include int enter(void…

c语言字符串传给swift,如何把字符串数组从 Swift 传递给 C

作者&#xff1a;Natasha The Robot&#xff0c;原文链接&#xff0c;原文日期&#xff1a;2016-10-27译者&#xff1a;BigbigChai&#xff1b;校对&#xff1a;walkingway&#xff1b;定稿&#xff1a;CMBSwift 允许我们将原生的字符串直接传递给一个接受 C String(即 char *)…

c语言上机题库程序设计,C语言上机程序设计题库及答案.docx

C语言上机程序设计题库及答案C语言上机程序设计题库【程序设计】功能&#xff1a;根据整型形参m&#xff0c;计算如下公式的值&#xff1a;ysin(m)*10。【参考代码】 double y0; ysin(m)*10; return(y);功能&#xff1a;若x、y为奇数&#xff0c;求x到y之间的奇数和&#xff1b…

Android端发送字符到Wed端,android应用端向web端获取字符串。

一 发送和接收普通的JSONArray(仅仅包含字符串的数组)1)web端&#xff1a;PrintWriter out response.getWriter();ListorderAllList new USER().getListStr();JSONArray jsonArray JSONArray.fromObject(orderAllList);System.out.println("wowowo"jsonArray);whil…

three.js使用精灵模型Sprite渲染森林

效果&#xff1a; 源码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right&quo…

android logcat 系统 分析,Android日志系统Logcat源代码简要分析

原文出处——>[Android日志系统Logcat源代码简要分析](http://blog.csdn.net/luoshengyang/article/details/6606957)在前面两篇文章Android日志系统驱动程序Logger源代码分析和Android应用程序框架层和系统运行库层日志系统源代码中&#xff0c;介绍了Android内核空间层、系…

android订阅管理,RXJAVA取消订阅封装-kotlin-Android

因为好几次自己想要在别的项目使用&#xff0c;每次都要重写一遍太麻烦&#xff0c;整理了一下发布到 jcenter 。利用官方lifecycle库与kotlin语言特性。lifecycle官方 support 27 自带。库代码数少于100行。用法&#xff1a;1、添加依赖implementation com.sjianjun:rxutils:1…

android 动画完成后不可点击事件,android – TranslateAnimation后按钮不可点击

点击后,我想移动按钮(带动画).我希望它在第一次点击时移动100个像素,底部移动100个像素,第二个100像素,第三个底部的100个像素,依此类推.我有简单的布局文件(main.xml)&#xff1a;android:id"id/button"android:layout_width"wrap_content"android:layout…

鸿蒙系统操作界面布局,华为鸿蒙操作系统大曝光

描述华为鸿蒙操作系统大曝光5月21日&#xff0c;华为消费者业务CEO余承东透露&#xff0c;面向下一代技术而设计的华为操作系统“鸿蒙”&#xff0c;最早将于今秋面市。而就在前天&#xff0c;环球时报(Global Times)发出推文表示&#xff1a;有消息人士称&#xff0c;华为正在…

android 高德获取省市,高德地图定位获取当前地址城市街道等详细信息(全部代码)...

自动定位后弹窗信息&#xff0c;包含省市县镇区路门牌号(效果图如下)代码↓↓↓获取地理位置var mapObj new AMap.Map(iCenter);mapObj.plugin(AMap.Geolocation, function () {geolocation new AMap.Geolocation({enableHighAccuracy: true, // 是否使用高精度定位&#xff…

nsq Android客户端,NSQ的golang客户端简单使用

NSQ的golang客户端简单使用NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统&#xff0c;正好使用到了这个东西&#xff0c;在这里简单的记录下。获取客户端nsq的golang客户端是官方版本的go get github.com/nsqio/go-nsq即可简单的消费者和生产者使用该客户…

鸿蒙系统新手教程,鸿蒙灭神决新手入门全流程图文攻略

鸿蒙灭神决新手入门全流程图文攻略2019-03-21 15:04:13来源&#xff1a;天天RPG编辑&#xff1a;野狐禅评论(0)中后期回归主题&#xff0c;如果还是打不过神器2&#xff0c;可以先到“中级挑战”这里完成第一排的四项挑战&#xff0c;可以获得四件道具。从这里开始由于我们刷木…

html中websocket获取数据,如何使用websocket从数据库中获取数据来刷新视图

在标准的Web交互中&#xff0c;客户端(即您的Web浏览器)向您的服务器发送请求。您的服务器收到请求&#xff0c;然后发送回您的浏览器中显示的信息&#xff0c;然后终止连接。WebSockets是一种在客户端和服务器之间创建持久&#xff0c;双向连接的方式&#xff0c;但它需要两者…

流内容html,为什么,和元素属于html中的流内容?

您在引用的部分中通常会忽略这个词.他们中的大多数确实包含文本,但并非所有文本都包含文本.其中一些,如< br>和< hr>您指出的元素不包含任何内容(因此不是typical个流内容元素).Most elements that are used in the body of documents and applications are catego…

html添加工具栏,添加带有命令的工具栏 (HTML)

添加带有命令的工具栏 (HTML)03/04/2016本文内容[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发&#xff0c;请参阅 最新文档 ]ToolBar 是一个简单的控件&#xff0c;用于解决命令扩展问题。它具有一个 …

用计算机解决问题 评课稿,总结反思:二年级数学lbrack;解决问题rsqb;评课稿

二年级数学《解决问题》评课稿二年级数学《解决问题》评课稿今天上午听了一节二年级数学上册用加减混合的常识《解决问题》的课&#xff0c;受益匪浅。我觉得这节课是顺利的&#xff0c;有待我们学习跟借鉴。雷老师虽未年过五旬&#xff0c;但他不服老的敬业精神&#xff0c;以…

计算机信息科学蔺泽浩,上海交通大学计算机科学与工程系(CSE)

脑机交互的多模态疲劳驾驶检测系统本系统通过获取驾驶员的脑电信号(EEG)、眼电信号(EOG)、握力信号和Kinect图像&#xff0c;从生理信号和行为特征中提取与疲劳相关的特征&#xff0c;利用机器学习方法建立疲劳检测模型&#xff0c;实现驾驶员疲劳状态的度量与预测。与传统的基…