精华内容
下载资源
问答
  • 本文讨论的数据类型转换,并非传统意义上...以Short和Ushort为例,short取值范围-32767 ~ + 32768,Ushort取值范围0 ~ 65536。 若在计算机寄存器内存储了“1011 0000 0100 0110”,这样一串二进制数 那么对于Ush...

    本文讨论的数据类型转换,并非传统意义上针对数值不变的数据类型转换,即不是说数据变换了类型后其值不变

    本文讨论的是数据类型转换后,其在寄存器保存的二进制数是一样的

    以Short和Ushort为例,short取值范围-32767 ~ + 32768,Ushort取值范围0 ~ 65536。

    若在计算机寄存器内存储了“1011 0000 0100 0110”,这样一串二进制数

    那么对于Ushort来说,数值是45126,而对于Short来说其值是 -20410

    值得注意的是,负数在计算机中以补码形式存储的。

    1. 添加必要的引用

    Imports System.Runtime.InteropServices

    2. 加入下述代码

    <StructLayout(LayoutKind.Explicit)> _
    Public Structure SHORT_USHORT
        <FieldOffset(0)> Public ShortValue As Short
        <FieldOffset(0)> Public UShortValue As UShort
        <FieldOffset(0)> Public CharValue As Char
    End Structure

    3.  使用实例,下列代码放函数

    Dim temp As SHORT_USHORT
    temp.UShortValue = 45126

    给temp的Ushort类型赋值45126,下面看看对应的Short值

    标题

    已经转换完成。

     

    展开全文
  • 详细的解释请看C/C++ 各种变量的数据范围) long long -9223372036854775808 ~ +9223372036854775807 (8 Bytes) double 1.7 * 10^308 (8 Bytes) unsigned long long的最大值:18446744073709551615

    char -128 ~ +127 (1 Byte)
    short -32767 ~ + 32768 (2 Bytes)
    unsigned short 0 ~ 65535 (2 Bytes)
    int -2147483648 ~ +2147483647 (4 Bytes)
    unsigned int 0 ~ 4294967295 (4 Bytes)
    long == int (字节数都为 4 位的情况下,有的编译器 long 的字节数是 8 位的。详细的解释请看C/C++ 各种变量的数据范围
    long long -9223372036854775808 ~ +9223372036854775807 (8 Bytes)
    double 1.7 * 10^308 (8 Bytes)
    unsigned long long的最大值:18446744073709551615

    展开全文
  • OpenCV Mat数据类型及位数总结

    千次阅读 2019-10-29 09:19:48
    在OpenCV里面,许多数据结构为了达到內存使用的最优化,通常都会用它最小上限的空间来分配变量,有的数据结构也会因为图像文件格式的关系而给予适当的变量,因此需要知道它们声明的空间大小来配置适当的变量。...

    float:  4字节,6-7位有效数字 -3.4E-38 到 3.4E38    
    double: 8字节,15~16位有效数字 -1.7E-308 到 1.7E308

       在OpenCV里面,许多数据结构为了达到內存使用的最优化,通常都会用它最小上限的空间来分配变量,有的数据结构也会因为图像文件格式的关系而给予适当的变量,因此需要知道它们声明的空间大小来配置适当的变量。一 般标准的图片,为RGB格式它们的大小为8bits格式,范围为0~255,对一个int空间的类型来说实在是太小,整整浪费了24bits的空间,假设有个640*480的BMP文件空间存储內存,那整整浪费了640*480*3*(32-8)bits的內存空间,总共浪费了2.6MB!,也就是那 2.6MB内什么东西都没存储,如果今天以8bits的格式来存储则只使用到0.6MB的內存而已(640*480*3*(8)+54 bits),因此,对于文件格式的对应是一件很重要的事。
       在这边除了要考虑bits的空间大小外,还要考虑使用类型的正负号的问题,一般的图像文件是不存在负号的,如果今天即使选则正确的空间大小,可是出现的结果却是负的,那就功亏一篑了。这里除了Float及double类型,char,int,short int都是用二的补数表示法,它们不具正负号bit,而Float,double则是用IEEE 754,在第32bit,64bit上有一个正负号bit.

    cvCreateImage()及cvCreateMat()对应

    1.Unsigned 8bits(一般的图像文件格式使用的大小)
    IplImage数据结构参数:IPL_DEPTH_8U
    CvMat数据结构参数:CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4

    变量类型空间大小范围其他
    uchar8bits0~255(OpenCV缺省变量,同等unsigned char)
    unsigned char8bits0~255 

     

    2.Signed 8bits
    IplImage数据结构参数:IPL_DEPTH_8S
    CvMat数据结构参数:CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4

     

    变量类型空间大小范围其他
    char8bits-128~127 

     

    3.Unsigned 16bits
    IplImage数据结构参数:IPL_DEPTH_16U
    CvMat数据结构参数:CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4
     

    变量类型空间大小范围其他
    ushort16bits0~65535(OpenCV缺省变量,同等unsigned short int)
    unsigned short int16bits0~65535(unsigned short)

     

    4.Signed 16bits
    IplImage数据结构参数:IPL_DEPTH_16S
    CvMat数据结构参数:CV_16SC1,CV_16SC2,CV_16SC3,CV_16SC4
     

    变量类型空间大小范围其他
    short int16bits-32768~32767(short)

     

    5.Signed 32bits
    IplImage数据结构参数:IPL_DEPTH_32S
    CvMat数据结构参数:CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4
     

    变量类型空间大小范围其他
    int32bits-2147483648~2147483647(long)

    unsigned int  ->  CV_32SC1

     

     

    6.Float 32bits

    IplImage数据结构参数:IPL_DEPTH_32F
    CvMat数据结构参数:CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4
     

    变量类型空间大小范围其他
    float32bits1.18*10-38~3.40*1038 

     

    7.Double 64bits

    CvMat数据结构参数:CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4
     

    变量类型空间大小范围其他
    double64bits2.23*10-308~1.79*10308 

     

    8.Unsigned 1bit

    IplImage数据结构参数:IPL_DEPTH_1U

     

    变量类型空间大小范围其他
    bool1bit0~1 

     

    其他变量对应

     

    1.Signed 64bits

    int64

    long long

    2.

    Unsigned 64 bits
    uint64

    unsigned long long

    •  
    • 如果矩阵是类型,CV_8U那么使用Mat.at<uchar>(y,x)
    • 如果矩阵是类型,CV_8S那么使用Mat.at<schar>(y,x)
    • 如果矩阵是类型,CV_16U那么使用Mat.at<ushort>(y,x)
    • 如果矩阵是类型,CV_16S那么使用Mat.at<short>(y,x)
    • 如果矩阵是类型,CV_32S那么使用Mat.at<int>(y,x)
    • 如果矩阵是类型,CV_32F那么使用Mat.at<float>(y,x)
    • 如果矩阵是类型,CV_64F那么使用Mat.at<double>(y,x)

     

    1. 什么是图像的通道?

    在了解 CvType 这个常量类之前,需要先知道图像的通道是什么。OpenCV 中,图像可以分别为1,2,3,4 通道。

    • 1 通道为灰度图;
    • 2 通道的图像是RGB555和RGB565。2通道图在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便。RGB555是16位的,2个字节,5+6+5,第一字节的前5位是R,后三位+第二字节是G,第二字节后5位是B,可见对原图像进行压缩了
    • 3 通道为彩色图(RGB);
    • 4 通道为 RGBA ,是RGB加上一个A通道,也叫alpha通道,表示透明度,PNG图像是一种典型的4通道图像。alpha通道可以赋值0到1,或者0到255,表示透明到不透明

    大部分使用场景下,常使用的是1,3,4通道; 2通道不常见

    2. CvType 类型常量组合规则

    CV_[bite](U|S|F)C[channels]
    
    • bite : 比特数,位数。 有 8bite,16bite,32bite,64bite,对应在 Mat 中,每个像素的所占的空间大小,8位即 CV_8

    • U|S|F :

      • U : unsigned int , 无符号整形
      • S : signed int , 有符号整形
      • F : float , 单精度浮点型,float类型本身即有符号

      这里的有符号、无符号是针对图像二进制编码来讲的。我在写的过程中大多数情况下都是使用的无符号,即 CV_8U ,CV_16U,当有计算时可能会介入有符号(存在负数),没学过 C++,对底层也一知半解,望高手解答。

    • C[channels]:图像的通道数

    通过上边的解释,我想您已经明白了个大概,比如 CV_8UC3 即 8位无符号的3通道(RGB 彩色)图像

    3. CvType 各 Bite 下可用参数说明

    • 8U
      • 说明:无符号的8位图
      • 值:CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4
      • 通道取值范围:0~255
    • 8S
      • 说明:有符号的8位图
      • 值:CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4
      • 通道取值范围:-128~127
    • 16U
      • 说明:无符号的16位图
      • 值:CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4
      • 通道取值范围:0~65535
    • 16S
      • 说明:有符号的16位图
      • 值:CV_16SC1,CV_16SC2,CV_16SC3,CV_16SC4
      • 通道取值范围:-32768~32767
    • 32S
      • 说明:无符号的32位图
      • 值:CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4
      • 通道取值范围:2147483648~2147483647
    • 32F
      • 说明:浮点型32位图
      • 值:CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4
      • 通道取值范围:1.18*(10[-38次方])~3.40*(10[38次方])
    • 64F
      • 说明:浮点型64位图
      • 值:CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4
      • 通道取值范围:2.23*(10[-308次方])~1.79*(10[308次方])
    • 1U
      • 说明:1位
      • 值:IPL_DEPTH_1U
      • 通道取值范围:0~1

    这篇文章对8,16,32,64位下大小取值范围说明很详细

    展开全文
  • C# 数据类型转换--(ushort 转换补充)

    千次阅读 2018-11-05 11:47:32
    using System; using System.Collections.Generic; using System.Text; namespace ConvertDataType { class Program { static void Main(string[] args) { ushort[] data; ...
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConvertDataType
    {
        class Program
        {
            static void Main(string[] args)
            {
                ushort[] data;
                //Convert ushort array to Long, data[0]=>Low Word, data[1]=>High Word
                data = new ushort[2] { 4, 65535 };
                long longValue;
                longValue =(Int32)(((UInt32)data[1] << 16) | (UInt32)data[0]);
                Console.WriteLine(longValue.ToString()); //-65532
                Console.ReadLine();
                
                //Convert ushort array to UnsignedLong, data[0]=>Low Word, data[1]=>High Word
                data = new ushort[2] { 25520,13587 };
                ulong ulongValue;
                ulongValue = (UInt32)(((UInt32)data[1] << 16) | (UInt32)data[0]);
                Console.WriteLine(ulongValue.ToString()); //890463152
                Console.ReadLine();
                
                //Convert ushort array to Hex 
                data = new ushort[1] { 17988 };          
                Console.WriteLine(data[0].ToString("X4")); //FFFF
                Console.ReadLine();
               
                //Convert ushort array to Float 
                data = new ushort[2] { 19311, 65529 };         
                float[] floatData = new float[data.Length / 2];
                Buffer.BlockCopy(data, 0, floatData, 0, data.Length * 2);
                for (int index = 0; index < floatData.Length; index += 2)
                {
                    Console.WriteLine(floatData[index / 2].ToString("0.0000")); //123.4560
                    Console.ReadLine();              
                }
                
                //Convert to double
                data = new ushort[4] { 65512, 59784, 64790, 16675 };
                double[] doubleData = new double[2];
                Buffer.BlockCopy(data, 0, doubleData, 0, 8);
                Console.WriteLine(doubleData[0].ToString());
    
    
                //Convert ushort value to Int16                         
                ushort ushortValue = 65516 ;
                Int16 int16Value = (Int16)ushortValue;            
                Console.WriteLine(int16Value.ToString()); //-20
                Console.ReadLine();
    
                //------------------------------------------------------------------------------------------
                
                ushort[] uintData = new ushort[2];  
       
                //Convert Long value to ushort array                             
                long[] longData ;
                longData = new long[1] { -65532 };
                Buffer.BlockCopy(longData, 0, uintData,0 , 4);
                for (int index = 0; index < uintData.Length; index ++)
                {
                    //uintData[0] = 4 ;uintData[1] = 65535
                    Console.WriteLine(string.Format("uintData[{0}] = {1}", index, uintData[index]));              
                }
                Console.ReadLine();
    
                //Convert UnsignedLong value to ushort array          
                ulong[] ulongData;
                ulongData = new ulong[1] { 890463152 }; 
                Buffer.BlockCopy(ulongData, 0, uintData, 0, 4);
                for (int index = 0; index < uintData.Length; index++)
                {
                    //uintData[0] = 25520;uintData[1] = 13587
                    Console.WriteLine(string.Format("uintData[{0}] = {1}", index, uintData[index]));
                }
                Console.ReadLine();
    
                //Convert Hex to ushort
                string hexValue = "FFEC";     
                Console.WriteLine(Convert.ToInt32(hexValue, 16));  //65516       
                Console.ReadLine();
    
                //Convert Float to short 
                floatData = new float[1] { 223.4560f };
                Buffer.BlockCopy(floatData, 0, uintData, 0, 4);
                for (int index = 0; index < uintData.Length; index++)
                {
                    //uintData[0] = 29884 ;uintData[1] = 17247
                    Console.WriteLine(string.Format("uintData[{0}] = {1}", index, uintData[index]));
                }
                Console.ReadLine();
          
                //Convert Int16 value to ushort           
                int16Value = -35;
                ushort uintValue = (ushort)int16Value;
                Console.WriteLine(uintValue.ToString()); //65501
                Console.ReadLine();
                
            }
        }
    }
    

     

    展开全文
  • 组态王的数据类型

    2018-03-16 11:34:20
    组态王的数据类型,详细的介绍,内存离散变量、I/O离散变量、2.内存实型变量、I/O实型变量
  • 数据类型取值范围 bool型为布尔型,占1个字节,取值0或1。 BOOL型为int型,一般认为占4个字节,取值TRUE/FALSE/ERROR。 sbyte型为有符号8位整数,占1个字节,取值范围在128~...
  • 由于经常进行数据对接,解析Modbus协议,把常用的几个帮助类做一记录,方便随时查阅,类中包含CRC16校验,进制之间的转换等。 /********************************************* * 命名空间:ModbusServer.Common...
  • 一、在C++中从字节数组中获取short,int,long,float,double等数据 在进行Modbus协议通信和网络编程时,有时需要将从串口或者网络中接收的数据从字节数组转换成对应的int,float,double等数据,有时还要考虑大小端字节...
  • C#的数据类型可以分为3类:数值类型,引用类型,指针类型。指针类型仅在不安全代码中使用。  值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型。引用类型包括类类型,接口类型,代表类型和数组...
  • .net中Ushort转short

    2019-12-18 22:37:57
    在工业控制数据采集系统中遇到的问题,用NModbus读的寄存器,返回的是UShort数组,这个时候再转Short就会出错,再网上查找资料找到以下代码段: Imports System.Runtime.InteropServices <StructLayout...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    大家注意,这里我们实际定义了一个新的数据类型,为用户自己定义的数据类型,是对个人的特性和行为的描述,他的类型名为Person,和int,char等一样为一种数据类型。用定义新数据类型Person类的方法把数据和处理数据...
  • MFC中的UINT与USHORT

    千次阅读 2018-07-03 11:18:05
    我尝试了很多数据类型并查找资料,于是确定了该类的定义模式应该是 USHORT * AxisList。 看到了一些解释:1. ushort实际是一个宏,不是C标准数据类型。这应该可以在系统的头文件中找到相关的typedef定义。2 ....
  • MFC中关于UINT与USHORT

    千次阅读 2016-03-21 21:13:41
    ushort实际是一个宏,不是C标准数据类型。这应该可以在系统的头文件中找到相关的typedef定义。2 .unsigned short。个人觉得第二种比较靠谱。 又找到关于WORD的解释:16-bit 整数 ,未带正负号。 所以这里...
  • * 函数功能:读数据 * * 输入参数:card_type(卡片类型);keyName(字段名(FileStruct.ini)) * * 输出参数:data(字段对应的数据);dlen:数据的实际长度 * * 返回值: 0-成功,其它-失败 */ EXPORTDLL int ...
  • 基于TDI 的 TCP数据传输 1.上位机 上位机包括tcp和tcp.cpp 1.1 对外函数说明 HANDLE TdiTcpOpen(); TdiTcpOpen用于打开设备,成功返回有效的句柄,失败返回INVALID_HANDLE_VALUE. BOOL TdiTcpClose(HANDLE ...
  • ushort型为无符号16位整数,占2个字节,取值范围在0~65,535之间。 int型为有符号32位整数,占4个字节,取值范围在-2,147,483,648~2,147,483,647之间。 uint型为无符号32位整数,占4个字节,取值范围...
  • public ushort wMilliseconds; } public class NativeMethods { /// Return Type: INT->int ///lpSystemTime: LPSYSTEMTIME->_SYSTEMTIME* ///pvtime: DOUBLE* [DllImportAttribute("OleAut32.dll", ...
  • 常用数据转化方法.pdf

    2021-09-26 10:04:31
    介绍ushort和int类型的转换,其中包括移位、按位或等操作。
  • sharpGL indexbuffer.SetData(OpenGL gl, ushort[] rawData);SetData的第二个参数为ushort只能表示65536以下的数据,现在需要传入10万个数据数据值也会大于65536
  • ushort UInt16 无符号整数 16 0 到 65535 long Int64 有符号整数 64 -922337203685477508 到 922337203685477507 ...
  • 我有一个char型指针,指向的内容是“0123456789abcdef”的字符数组,我现在想要将其转换成USHORT数据{0123,4567,89ab,........}. 由于数据有约1M大小,故使用sscanf(pcTemp,"%X",pusTemp); sscanf函数速率太慢...
  • 想用IPython.display 播放一个音频的时候遇到这样一个错误,和普通的音频数据对比发现我的采样频率是二维的,像这样 后面出现错误的原因就是因为读到的数据是语音文件的采样频率,有两列,表示是双声道语音信号,...
  • 简言之,就是能把所使用的数据转换成在内存中存储的形式 常用到的一些格式字符 b char 1 B uchar 1 h short 2 H ushort 2 i int 4 I uint 4 l long 4 L ulong 4 q longlong 8 Q ulonglong 8 f float 4 d double 8 小...
  • BOOL型为int型,一般认为占4个字节,取值TRUE/FALSE/ERROR。...ushort型为无符号16位整数,占2个字节,取值范围在0~65,535之间。 int型为有符号32位整数,占4个字节,取值范围在-2,147,483,648~2,147,483,647之
  • 最近有这样一个需求,采用某国内公司的测距模块,并形成指定样式的模块组,串口同学,有数据结构和通讯说明文档; 其实网上有很多提供源码的串口调试工具之类的资源,一般的需求都能从这些资源中找到解决方案,我...
  • Qt中基本数据类型

    千次阅读 2017-09-30 10:30:40
    typedef qint8 typedef qint16 typedef qint32 typedef qint64 typedef qlonglong typedef qptrdiff typedef qreal typedef quint8 typedef quint16 ...ushort
  • c#数据类型基础

    2020-12-31 19:56:59
    数据类型 说明 取值范围 对应于System程序集中的结构 sbyte 有符号8位整数 -128-127 SByte byte 无符号8位整数 0-255 Byte short 有符号16位整数 -32768-32767 Int16 ushort 无符号16位整数 ...
  • MemoryStream有关内存数据的读写

    千次阅读 2017-09-09 12:19:54
    MemoryStream内存数据的读写  电脑中最基本的单位是位(bit),但位这个单位太小,所以字节(Byte)是电脑存储容量的基本计量单位。Byte可简写为B,一个字节右八个二进制组成,其最小值为0,最大值为11111111,一个...
  • C#和Java数据类型的区别 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术: 作者:刘海红 撰写时间: 2019年7月29日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
  • C++数据类型取值范围

    2019-03-14 10:22:40
    ushort型 为无符号16位整数,占2个字节,取值范围在0~65,535之间。 int型 [-2^31 ,2^31-1] 为有符号32位整数,占4个字节,取值范围在-2,147,483,648~2,147,483,647之间。   uint型 为无符号...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,780
精华内容 7,912
关键字:

ushort数据