short转换为char,提取单字节

2023-05-16

本文描述:将两个字节长度的wdVersion,分别提取出低字节和高字节的值,此方法可以用于不同类型不同长度的单字节提取!

(注释种的位操作的方法也可以,先 移位  后  位与  操作)

wdVersion的类型为 unsigned short。2字节

取变量wdVersion(长度2字节)的第一个字节的值!
        第一步,取首地址          &wdVersion
        第二步,强制转换          (char*)&wdVersion  将2字节data变成1字节!!!
        第三步,取值                *((char*)&wdVersion)

#include<WinSock2.h> //头文件,Windowssocket
#pragma comment(lib,"ws2_32.lib")//加载库文件
# include<stdio.h>

int main(void)
{
	WORD wdVersion = MAKEWORD(2, 1);//2.1  //typedef unsigned short      WORD; 两个字节
	//WSAStartup(,);
	
	//取变量wdVersion(长度2字节)的第一个字节的值!
		//第一步,取首地址          &wdVersion
		//第二步,强制转换          (char*)&wdVersion  将2字节data变成1字节!!!
		//第三步,取值              *((char*)&wdVersion)

	int a = *((char*)&wdVersion);  //取低字节:变成(char*)并取值
	int b = *((char*)&wdVersion+1);//取高字节:变成(char*)后+1,并取值

	int c = (char*)(&wdVersion);
	int d = (char*)(&wdVersion+1);
	
	int e = *(&wdVersion);//258,完整的short类型的值
	int f = *((char*)(&wdVersion) + 1);//同int b
    int g = *((char*)(&wdVersion + 1));-52,h的值取了第二个字节
	int h = *(&wdVersion + 1);//wdVersion首地址+2后的地址所存储的值,类型和值都未知

	/*
	//取字节的另一种方法:位操作!!!
	int c = (wdVersion>>8)&0xff;//取高字节
	int d = wdVersion & 0xff;//取低字节
	*/

	printf("a=%d b=%d c=%d d=%d e=%d f=%d g=%d h=%d\n", a, b,c,d,e,f,g,h);
	

	system("pause");
	return 0;
}

wdVersion=258= 0000 0001  0000 0010;高字节是1,低字节是2

十进制52428=》二进制1100 1100 1100 1100‬=》高字节1100 1100(此为补码)=》最高位代表负号 (-1得到反码)11001011=》(除符号位外各位取反)得到原码10110100=》去掉符号位得110100=52(绝对值)

验算:-52= (最高符号位)原码1011 0100 =(除符号位外各位取反)反码 1100 1011=(+1后得到)补码 11001100 

结论:

1.  (char*)的意义在于,将原本两个字节的short类型,断开成了单字节!

 

 

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

short转换为char,提取单字节 的相关文章

  • 在 C 中将 char 数组转换为 int 数字

    我想将 char array 转换为 char myarray 4 1 2 3 where the means it is negative 所以它应该是整数 1234 使用standard图书馆在C 我找不到任何优雅的方法来做到这一点 我
  • 从文件中读取为 char 数组

    我正在从文件中读取 当我读取时 它会逐行读取并打印它 我想要的正是我想要一个 char 数组来保存文件中的所有字符并打印一次 这是我的代码 if strcmp str 0 0 FILE filecomand char fname 40 ch
  • 如何更改 Rust 字符串中特定索引处的字符?

    我正在尝试更改字符串中特定索引处的单个字符 但我不知道如何更改 例如 我如何将 hello world 中的第四个字符更改为 x 以便它成为 helxo world 最简单的方法是使用replace range https doc rust
  • Visual Studio 中的递归

    当我运行这个非常简单的递归代码时 我发现当函数 recursCheck 使用整数参数时 我的内存在 Win32 模式下跳到 200 MB 在 x64 模式下跳到 45 MB 并且当参数的类型为 short Win32 模式使用的内存为 4
  • Ansichar 和 char 有什么区别? [复制]

    这个问题在这里已经有答案了 我最近遇到了这种数据类型不匹配的情况 这是我以前从未见过的 我希望有人能解释它们是什么以及它们有何不同 我得到的错误是 F2063 DCC 错误 E2010 不兼容的类型 AnsiChar 和 Char 历史上在
  • gdb:调试 VS 代码时数组中<错误读取变量>

    我在调试期间尝试查看数组的内容时遇到问题 我看到的不是字符 My code include
  • 如何计算字符串中括号的个数?

    这是我计算字符串中括号数量的方法 public int checkParenthesis String print char par int num 0 for int i 0 i
  • Java中将short转换为byte[]

    我怎样才能转换short 2 个字节 到 Java 中的字节数组 例如 short x 233 byte ret new byte 2 应该是这样的 但不确定 0xFF lt lt 8 x gt gt 0 EDIT 您还可以使用 java
  • C 中求短整型变量的最大值

    我正在做 K R 的练习 2 1 目标是计算不同变量类型的范围 下面是我计算最大值 a 的函数short int可以包含 short int max short void short int i 1 j 0 k 0 while i gt k
  • 如何清空字符数组?

    有一个像 char Members 255 这样的字符数组 如何在不使用循环的情况下完全清空它 char members 255 我所说的 空 是指如果它存储了一些值 那么它就不应该 例如 如果我执行 strcat 那么旧值不应保留 mem
  • 为什么这段带有“1234”的代码可以在 C++ 中编译?

    为什么会这样编译 char ch 1234 no error 但不能超过 4 个chars char ch 12345 error Too many chars in constant 是的 我知道 用于一个char and 用于字符串 我
  • Java中的字符算术

    在玩的过程中 我遇到了一些对我来说似乎很奇怪的事情 以下不是有效的 Java 代码 char x A x x 1 possible loss of precision 因为其中一个操作数是整数 所以另一个操作数被转换为整数 结果无法分配给字
  • C++:获取数组中char元素的索引

    我需要获取数组中的字符数 const char myarray 5 0 a e f c Create array of char int number 0 Create variable number getposition myarray
  • 字符串文字在内存中的什么位置?堆栈/堆? [复制]

    这个问题在这里已经有答案了 可能的重复 C 字符串文字 它们去了哪里 https stackoverflow com questions 2589949 c string literals where do they go 据我所知 一般来
  • ColdFusion:无效的 XML 控制字符(十六进制)

    我正在尝试使用创建一个 xml 对象
  • Windows 上的 wchar_t 和 char16_t 是一样的吗?

    我有一个实例std u16string 我可以通过它吗c str 到一个 Win32 API 它期望LPCWSTR 没有任何类型的转换 例如 我可以安全地这样做吗 auto u16s std u16string u Hello SetWin
  • Java 中如何将 char 转换为 int? [复制]

    这个问题在这里已经有答案了 我是Java编程新手 我有例如 char x 9 我需要得到撇号中的数字 即数字 9 本身 我尝试执行以下操作 char x 9 int y int x 但没有成功 那么我应该怎么做才能得到撇号中的数字呢 ASC
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include
  • Char 指针与传递给函数的 Int 指针

    我以为我理解指针 但我认为它们的不同对待方式存在细微差别 我不太明白 当我将整数指针或整数地址传递给 showInt 时 它将打印出与函数外部相同的内存地址 然而 当我将以下指针传递给 showChar char value One sho
  • C# Console.WriteLine 将 Char 类型打印为 Integer [重复]

    这个问题在这里已经有答案了 我不明白为什么打印 char 数据类型一次为 char 另一次为整数 static void Main string args char x A int i 0 Console WriteLine x A Con

随机推荐

  • 软件工程导论期末复习(三)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 需求分析的基本任务是什么 xff1f 2 分析建模 2 1什么是模型 xff1f 模型 xff1a 就是为了理解事物而对事物做出的一种抽象 xff0c 是对事物的一种无歧义的书
  • 软件工程导论期末复习(四)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 有穷状态机 2 peri网技术 第四章 形式化说明技术 4 1 概述 1 非形式化方法的缺点 用自然语言书写的系统规格说明书 可能存在矛盾 二义性 含糊性 不完整性及抽象层次混
  • 软件工程导论期末复习(五)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 在设计过程中 xff0c 总体设计一般有哪两个主要阶段组成 xff1f 2 什么模块化 xff1f 模块独立性包含哪些内容 xff1f 度量准则是什么 xff1f 3 启发规则
  • 软件工程导论期末复习(六)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 结构程序设计中有哪几种基本控制结构 xff1f 2 了解人机界面的设计 3 掌握过程设计的工具 xff08 程序流程图 盒图 PAD图 xff0c 判定树 xff09 4 面向
  • 技术人在互联网如何变现

    1 免费 xff08 引流的过程 xff09 免费的东西为什能够写到这里来 xff0c 天下哪有免费的午餐 xff0c 免费是实现流量聚集的手段 互联网无时无刻不体现免费的模式 xff0c 博客 各家文章平台 微博 公众号 短视频等等 xf
  • 软件工程导论期末复习(七)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 编码 2 测试技术 3 调试的途径有哪些 xff1f 4 软件可靠性和可用性的基本概念 第七章 实现 7 1 编码 1 编码 xff1a 软件设计结果翻译成用某种程序语言书写的
  • 软件工程导论期末复习(八)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 软件维护的定义 2 了解软件维护的特点 3 软件维护过程中维护组织包括哪些人员 xff1f 4 决定软件的可维护性的因素有哪些 xff1f 5 软件再工程过程 第八章 维护 8
  • 软件工程导论期末考试考后知识点总结

    感受 xff1a 大题多去做几道就可以 xff0c 难在记忆概念 xff0c 概念占篇幅近八成 xff0c 难受死了 第一章 1 软件危机的定义以及原因 2 软件工程的定义 3 软件工程方法学三要素 第二章 1 可行性研究的目的 2 数据流
  • linux操作--远程桌面RDP

    远程桌面RDP https www linuxidc com Linux 2018 10 155073 htm 相同的操作 xff1a https blog csdn net jgw2008 article details 80420180
  • Python工厂方法介绍及应用优化

    文章目录 前言一 工厂方法简单介绍1 统计信息2 简单实现 二 进一步优化具体实现1 抽象类及具体类部分2 工厂方法的封装3 用户调用接口 总结 前言 本文简单介绍设计模式中的工厂方法的实现方式及应用 文中所引用的模块及需要注意的事项 xf
  • Anaconda3 手动配置环境变量

    问题描述 Win 43 r 键打开系统运行对话框 xff0c 输入 cmd 回车 输入conda xff0c 显示 xff1a conda 不是内部或外部命令 xff0c 也不是可运行的程序或批处理文件 主要是因为安装 anaconda 时
  • xrdp_mm_process_login_response:login failed

    题外话 xff1a 被这个问题困扰了一个多钟 xff0c 百度搜索真的真的不如谷歌搜索 xff0c 最后是使用谷歌搜索一下子就找到适合自己的right answer xff01 问题描述 xff1a win10下远程桌面连接ubuntu服务
  • 使用SQl创建表单。查询,增加,修改删除,数据。

    使用SQl创建表单 查询 xff0c 增加 xff0c 修改删除 xff0c 数据 打开SQl数据库 右键数据库新建数据库 弹出新建数据库 xff0c 给数据库命名 左侧可以找到刚刚创建的数据库 选择刚刚创建滴数据库 xff0c 右键 表
  • Linux远程控制之VNC (server ,viewer)安装教程 || chkconfig

    VNC 可以实现对另外的计算机的操作 xff1a A xff1a 可以访问另一个计算机 xff0c 采用命令终端 或者窗口界面 B xff1a 可以远程控制另一个计算机 xff0c 两台同步显示操作 首先 xff0c 没有readme所说的
  • POJ 滑动窗口(优先队列的应用)

    数据结构与算法A 第三章 栈与队列 练习题 滑动窗口 思路 对于最大最小值分别维护一个优先队列 xff08 保存元素下标 xff09 以最小值为例 每次遇到一个新元素 xff0c 从队尾插入 插入时删去队列中比该值大的元素 xff08 因为
  • 数据结构:单链表头插法、尾插法、按值查找、按位查找、按位插入、删除、表长函数实现

    这里写目录标题 数据结构定义初始化头结点判断链表是否为空带头结点的按位序插入头插法尾插法按值查找 xff0c 返回节点按位查找 xff0c 返回节点将新节点插入到第i个位置删除第i个节点遍历输出求链表长度主函数测试各个功能完整代码 数据结构
  • Debian操作系统安装

    xff08 本文描述操作系统为debian 8 2 0 64位操作系统 以下使用debian代替debian 8 2 0 64位操作系统 xff09 下载 首先需要下载ubuntu操作系统iso映像文件 ubuntu kylin官网 下载W
  • linux文件属性、文件权限管理和stat函数

    1 linux中各种文件类型 1 1 普通文件 xff08 xff09 regular file 文本文件 xff1a 文件中的内容都是由文本构成的 xff0c 文本指的是ASCII码 xff0c Unicode码 xff0c utf8码等
  • argc和argv,参数个数和参数值

    argc xff1a argument count 参数个数 argv xff1a argument value 参数值 C C 43 43 语言中的main函数 xff0c 经常带有参数argc xff0c argv xff0c 如下 x
  • short转换为char,提取单字节

    本文描述 xff1a 将两个字节长度的wdVersion xff0c 分别提取出低字节和高字节的值 xff0c 此方法可以用于不同类型不同长度的单字节提取 xff01 xff08 注释种的位操作的方法也可以 xff0c 先 移位 后 位与