byte

std:byte详解 从上面可以看出std::byte本质上是强枚举类型。。 阅读详情

0本来表示一个整数。在C语言中,内存地址也是用整数int表示(32bit)。因此,
(BYTE *)0 表示把整数0强制转换为BYTE型数值的地址

Java的二进制采用补码形式,byte范围是[-128, 127],而Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,

举例来说,一个byte类型的-1(即0xff),会被转换成int 类型的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。

-1 hex  : 0xffffffff
-1&0xff : 0xff

-1 bin  : 11111111111111111111111111111111
-1&0xff bin: 11111111

127 bin    : 1111111
-128 bin   : 11111111111111111111111110000000

 

三。将十六进制字符串存为字节数组,可以节省存储空间

0499AFA3432E9F2EBD81C134C1F5E4B3(MD5串)

如果把这个MD5串直接存为字符串,就是32个字节(byte),就是256二进制位。

如果把MD5串的每个字符用16进制字符来表示,那么用二进制位就会表示成4个二进制位,总共是128位,也就是16个字节。那么节省了一半的存储空间。

 

四。在定义int类型的变量时,使用十六进制表示有什么好处?

int a = 0b11000011001111001100011100101000

还是这样好?

1100 0011 0011 1100 1100 0111 0010 1000
int a = 0xC33CC728


 机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.

1-1 = 1 + (-1) = 0 

于是人们开始探索将符号位参与运算, 并且只保留加法的方法. 首先来看原码:

一、原码

计算十进制的表达式: 1-1=0

1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2

如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数.

 

二、反码

为了解决原码做减法的问题, 出现了反码:

正数的反码是其本身

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

计算十进制的表达式: 1-1=0

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在"0"这个特殊的数值上. 虽然人们理解上+0和-0是一样的,

但是0带符号是没有任何意义的. 而且会有[0000 0000]原和[1000 0000]原两个编码表示0.

 

三、补码

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

于是补码的出现, 解决了0的符号以及两个编码的问题:

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原

这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了.  而且可以用[1000 0000]表示-128:

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补 + [1000 0001]补 = [1000 0000]补

-1-127 = -128,  就是[1000 0000]补  但是注意因为实际上是使用以前的-0的补码来表示-128,

所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的)

使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数。

这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

 

 四、同余

7 ≡ 7 (mod 12)

(-2) ≡ 10 (mod 12)

7 -2 ≡ 7 + 10 (mod 12)

所谓十六进制String,就是字符串里面的字符都是十六进制形式,因为一个byte是八位,可以用两个十六进制位来表示,因此,byte数组中的每个元素可以转换为两个十六进制形式的char,所以最终的HexString的长度是byte数组长度的两倍.

Byte(字节型)10 - 255


Byte数据类型(字节型)用一个字节(Byte)储存,可区别256个数字,取值范围:0到255。 Byte是从0-255的无符号类型,所以不能表示负数。具体参照数据类型。

效果等同于 unsigned char型
typedef unsigned char BYTE
定义一种新类型BYTE,它其实就是unsigned char
在VC++中,byte型数据的定义包含在windows.h头文件中,调用byte需要添加代码#include <windows.h>
而在java中,byte是一个关键字
表示声明了一个整形常量在内容中占用一个字节
取值范围是-128~127


字符串
在 内存中,如果“ 字符”是以 ANSI编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI字符串或者多字节字符串。如,"中文123" (占8字节,包括一个隐藏的\0)。
字符集
对于ANSI编码方式,存在不同的 字符集(Charset)。同样的字节序列,在不同的 字符集下表示的字符不一样。要正确解析一个ANSI 字符串,还要选择正确的 字符集,否则就可能导致所谓的 乱码现象。不同语言版本的 操作系统,都有一个默认的 字符集。在不指定 字符集的情况下,系统会使用此字符集来解析ANSI字符串。也就是说,如果我们在简体中文版的Windows下打开了一个由日文 操作系统保存的ANSI文本文件(仅包含ANSI 字符串的文本文件),我们看到的将是 乱码。但是,如果我们使用 Visual Studio之类的带编码选择的 文本编辑器打开此文件,并且选择正确的 字符集,我们将可以看到它的原貌。注意:简体中文 字符集中的繁体字和 繁体中文字符集中的繁体字,编码不一定相同(事实证明,似乎是完全不同)。
每个 字符集都有一个唯一的编号,称为 代码页(Code Page)。简体中文(GB2312)的代码页为936,而系统默认 字符集的代码页为0,它表示根据系统的语言设置来选择一个合适的字符集。
Unicode
字符串在 内存中,如果“字符”是以在Unicode中的序号存在的,那么我们称这种字符串为Unicode字符串或者宽字节字符串。在Unicode中,每个 字符都占两个字节。如,"中文123"(占10字节)。
Unicode和ANSI的区别就相当于 输入法内的“ 全角”和“ 半角”的区别。
由于不同ANSI编码所规定的标准是不相同的( 字符集不同),因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种字符集则,才能够知道它包含了哪些“字符”。而对于Unicode 字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。Unicode 有着统一的标准,它定义了世界上绝大多数的 字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文等都能以同一种编码方式保存。



STM32的选项字节(option byte) 以STM32F103为例。 选项字节的地址 参见stm32f10x.h头文件中的定义: #define OB_BASE ((uint32_t)0x1FFFF800) /*!< Flash Option Bytes base address */ 选项字节的定义 共有16个字节,定义如下: typedef struct { __IO uint16_t RDP; __IO uint16_t USER; __IO uint16_t .. 阅读详情

相关推荐

C++所有头文件和使用

int isspace(int ch) 若ch是空格(''),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n')返回非0值,否则返回0。char *ecvt(double value,intndigit,int *decpt,int *sign) 将浮点数value转换成字符串并返回该字符串。long strtol(char *str,char**endptr,int base)将字符串str转换成长整型数, 并返回这个数,

Aforxiaoxie 5367

C++入门:命名空间,缺省参数,函数重载详解

1. C++关键字(C++98) C++总计63个关键字,C语言32个关键字 ps:下面我们只是看一下C++有多少关键字,不对关键字进行具体的讲解。后面我们学到以后再细讲。 #includ<iostream>:相当于C语言里面的<stdio,h> using namespace std; 又是什么东西呢,接下来由此引入命名冲突和命名空间关键字 namespace 命名冲突: 命名冲突:同一个作用域不能定义同名变量 -- C语言没有很好的解决这个问题,CPP引入n...

zhang_si_hang的博客 2751

Java byte 类型用法集合

throw new IllegalArgumentException("byte数组必须不为空,并且是2位!throw new IllegalArgumentException("byte数组必须不为空,并且是8位!throw new IllegalArgumentException("byte数组必须不为空,并且是2位!throw new IllegalArgumentException("byte数组必须不为空,并且是4位!结果是int,但是符号位是0,说明是正数,最后就是正整数234.

1155

C++17完整导引-组件之std::byte

std::byte 是一种独立类型,它实现指定于 C++ 语言定义中的字节的概念。 同 char 与 unsigned char ,它能用于访问其他对象所占据的生内存(对象表示),但不同于这些类型,它不是字符类型且非算术类型。 byte 只是位的汇集,而且只对它定义逐位运算符。

西门吹雪 2129

BYTE和CBitmap之间的转换

其实是件很简单的事情,结果搞了一个下午,原因就是一个小小的细节,唉,总是败在这上面。。。        首先,从CBitmap中提取像素数据赋值给BYTE类型,代码如下: CBitmap Bmp;//背景图片 Bmp.LoadBitmap(IDB_BITMAP1);//从资源

莫认真,认真你就输了 5991

Flink CDC 1.18.1 Oracle 数据同步到postgresql

8、修改Flink的配置文件,主要是各种服务的绑定地址,默认为localhost,统统改为0.0.0.0,如:rest.address: 0.0.0.0 #localhost。将flink-sql-connector-oracle-cdc-3.0.1.jar复制到flink-1.18.1/lib目录中。6、下载 flink-connector-jdbc-3.1.1-1.17.jar,postgresql-42.7.3.jar。7、安装postgresql就不说了,相信你已经有了数据库了。

ynzhangyao的专栏 1799

Byte和byte区别详解

写程序时,误把byte写作Byte,调试了许久,便将二者的区别及用法详细理解一遍 1:byte和Byte详解 byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储的数据范围是-128~+127。 Byte是java.lang中的一个类,目的是为基本数据类型byte进行封装。 2:二者关系: Byte是byte的包装类,就如同Integer和int的关系, 一般情...

Guo_ping'blog 5万+

Astah 9.0升级步骤(Widnows/Mac OS)

Astah Professional是一款全新的轻量级UML建模工具。软件集思维导图和UML建模于一体,采用100%纯JAVA构建, 兼容性强,不仅能够实现分布式建模、项目合并,还能够实现和其它建模工具的交互。

tequiero777的博客 2824

Byte和byte的区别

Byte和byte的区别 背景 今天学习网络编程中,在建立Udp连接时,使用byte[]数组接收传输的数据,但是byte[]错写为Byte[],导致错误。 //接收数据; Byte[] buffer = new Byte[1024]; DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length); socket.receive(packet); 第2行没有报错,但是第三行一直报

weixin_43332934的博客 2241

centos 添加新硬盘,对根目录扩容

本地安装了虚拟机,系统为centos7,使用过程中,渐渐地发现磁盘容量不够用了,于是在虚拟机中新增了一块硬盘。 进入系统内查看: sdb是新增的硬盘,大小为40g。 接下来有两种方式,一种是普通方式直接挂载。https://blog.youkuaiyun.com/qq_39314099/article/details/106200322 这样的话只有在挂载点的目录下操作才能使用到这个新硬盘,不是很理想。 还有一种方式lvm,逻辑卷管理的方式。 LVM简单介绍: 它是 Linux 下对磁盘分区进行管

qq_39314099的博客 1万+

避坑指南:ROS2 Humble摄像头标定常见错误排查(从‘CALIBRATE’按钮不变绿到保存文件找不到)

本文详细解析了ROS2 Humble环境下摄像头标定的常见问题及解决方案,从CALIBRATE按钮不变绿到标定文件保存失败等疑难杂症。提供硬件准备、参数设置、实时诊断到结果验证的全流程指导,特别针对Ubuntu2204系统和usb_cam驱动的兼容性问题给出实用建议,帮助开发者高效完成内参标定。

weixin_29193359的博客 398

CPP-基础:char、BYTE、byte

一,C++语言的内建类型中没“BYTE”这么个类型。BYTE是WINDOWSPlatformSDK中windef.h里面定义的:typedefunsignedcharBYTE; 二,char与 byte(JAVA) 相同:c++中char型数组占一个字节。byte也占8个bit。 不同:char 是字符型(-127 - 128;byte是字节型(0 - 255)...

dixiongbi7761的博客 1030

CanOpen PDO映射实战:从原理到配置的完整指南

本文详细解析了CanOpen PDO映射的原理与配置流程,从基础通信机制到实战配置步骤,涵盖禁用PDO、清空映射、逐项映射和使能PDO等关键环节。特别针对西门子G120变频器、台达伺服和倍福CX控制器等不同厂商设备,提供了具体的配置技巧和常见问题排查指南,帮助工程师快速掌握多厂商设备间的PDO通信配置。

weixin_30718391的博客 517

c++ BYTE相关操作(字符串与BYTE,BYTE转换为8位的数组,int 转换 BYTE)

BYTE c++ BYTE相关操作。 字符串转BYTE(“0x14”->0x14) 下面的函数为MFC中获取控件中的输入文字,将其转换为对应的16进制BYTE void GetHexFromStr(CWnd *wd, BYTE *nByte) { CString strText; wd->GetWindowText(strText); int nTmpNum = 0; sscanf(strText, "%x", &nTmpNum); *nByte = nTmpNum; } B

江湖小馆的博客 6565

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

1727

Matlab图像地图上的最短路径计算算法——Dijkstra算法

接下来,我们进入主循环,不断从优先队列中取出距离最小的节点,并更新其邻居节点的距离和路径。Dijkstra算法是一种常用的最短路径算法,本文将介绍如何使用Matlab实现Dijkstra算法来计算图像地图上的最短路径。为了使用上述算法,我们需要将图像地图转换为一个矩阵,并将可通行的区域设置为白色(或其他亮度值),障碍物区域设置为黑色(或其他暗度值)。然后,我们可以指定起始节点和终止节点,并调用。通过上述的代码实现,我们可以在Matlab中使用Dijkstra算法来计算图像地图上的最短路径。

2301_78484069的博客 2044

C# Byte

Byte 类型 范围 大小 .NET类型 Byte 0~255 无符号的 8 位整数 System.Byte byte类型的范围转换为二进制是00000000~11111111。 byte类型占用空间小,1个字节,int型占用空间大,4个字节。当数据量小的时候,看不出区别。 当数据量大的时候很大的时候,比如60亿人的年龄,肯定是0~255之间的,如果用int就浪费了很多空间。 Byte[] 1. C# Byte[] string转换 C# string类型转成byte[]: Byt

qq_33134503的博客 5107

【声纳与人工智能融合——从理论前沿到自主系统实战】第一章 声纳AI的数据基础:仿真、数据集与表征学习

该数据集的特点是包含了多种底质背景(沙地、泥地、碎石区)与噪声条件,适合验证模型的背景抑制能力。Urashima数据集由日本海洋研究开发机构(JAMSTEC)发布,基于自主水下航行器(AUV)采集,包含前视声纳序列数据,主要用于水下导航与避障算法评估,其数据包含了精确的姿态与深度标注,支持三维场景重建算法的训练。北约海洋研究与实验中心(CMRE)发布的CMRE datasets包含侧扫与合成孔径声纳数据,特别适用于跨传感器域自适应研究,数据集中包含了同一区域的多种声纳成像结果,为跨模态学习提供了基准。

u012133341的博客 103

Byte和byte[]数组

  Byte和byte[]数组,“表示一个 8 位无符号整数, 一般为8位二进制数”。 Byte是计算机最基础的存储单位和最基础的通讯单位。 而所有的类型都是支持由byte[]类型转换而来。   为什么说Byte是最基础类型那, 其实这里的关键所在是,计算机最基础的算法是编码,包括媒体文件、图片、各种文档以致计算机算有数据的文件展现都是字符串,而这些字符串都是由编码得来。   不管...

weixin_34268310的博客 1940

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++中把BYTE转换为int

把BYTE转换为int也简单,直接用强制转换即可。 BYTE是一字节的,而int型是4字节,这是在转换中需要注意的。 如果只要把BYTE型的放在低位,则直接强制转换: BYTE byte=3; int a = (int)byte; //转换之后a = 3; 如果要把2个BYTE型的数据放在 int 的高位,就有点技巧了: BYTE byteArray[ ] = {3,2,

sspdfn的专栏 3473

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

BYTE,BYTE[] 问题

一个处理BYTE和其他类型转换的类:public class Tools{ //16进制    private static String HexCode[] = {        "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",        "a", "b", "c", "d", "e", "f"    };    private To

wuhuif==专栏 3130

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

File转byte[ ] byte[ ]转MultipartFile

一. File转byte[ ] File file = new File("xx"); byte[] buf = null; try { FileInputStream fis = new FileInputStream(file ); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] byte = new byte[1024]; int n;

xiaoq的博客 3451

android byte[] 清空,android byte的使用

释放双眼,带上耳机,听听看~!今天,简单讲讲android里byte的使用。这个其实很简单,但是自己觉得一直没有完全弄明白,所以记录一下。byte即字节的意思,是java中的基本类型,用心申明字节型的变量。通常在读取非文本文件时(如图片,声音,可执行文件)需要用字节数组来保存文件的内容,在下载文件时,也是用byte数组作临时的缓冲器接收文件内容。所以说byte在文件操作时是必不可少的。不管是对文件...

weixin_33393017的博客 2490

[源码解析]Byte

本篇文章是我解析Java-API的笔记,更多的是从方法着手,少对类的整体情况进行说明,故并不详尽,可供大家参考。 如果文中阐述不全或不对的,多多交流。

进步*于辰的博客 1万+

c++使用byte

<br />1.byte是ASCII对字节的描述,它并不是c++的关键字,所以没法直接用byte,而是用下面的BYTE<br />2.通常自定义BYTE为unsigned char<br />3.c++输出二进制可以用如下方法<br />#include <bitset><br />void printbinary(int n)<br /> {<br />     cout << bitset<sizeof(int)*8>(n) << endl;<br /> }<br />输出字节类型的为<br />

学而不思则罔 2万+
上一篇: 使用JSONObject生成和解析json
下一篇: 1
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值