CN107608714B - 字节对齐方法、装置及计算机可读存储介质 - Google Patents
字节对齐方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107608714B CN107608714B CN201710923018.2A CN201710923018A CN107608714B CN 107608714 B CN107608714 B CN 107608714B CN 201710923018 A CN201710923018 A CN 201710923018A CN 107608714 B CN107608714 B CN 107608714B
- Authority
- CN
- China
- Prior art keywords
- byte
- target
- determining
- binary number
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明公开了一种字节对齐方法、装置及计算机可读存储介质,属于计算机技术领域。所述方法包括:确定目标字节数的相反数,所述目标字节数为内存中存储的待对齐的目标数据的字节数;基于所述目标字节数的相反数和预设位移值,确定对齐字节,所述对齐字节用于描述所述目标数据存储的位置;基于所述对齐字节存储所述目标数据,以完成字节对齐。本发明通过目标字节数的相反数和预设位移值即可确定对齐字节,未出现浮点运算,从而提高了确定对齐字节的准确度和效率,进而提高了基于对齐字节,对齐目标数据的准确度和效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种字节对齐方法、装置及计算机可读存储介质。
背景技术
为了提高从内存中读取数据的效率,内存中的数据通常需要进行字节对齐。字节对齐是指将数据按照特定的规则进行存储,也即是,每个数据都有自己的对齐字节,数据必须在符合对齐字节的位置进行存储。当字节未对齐时,计算机可能需要从内存中进行多次取数据的操作才能将目标数据取出,比如,当目标数据为int型数据时,如果目标数据在内存中存放的位置按4字节对齐,也就是说1个int的数据全部落在计算机一次取数的区间内,那么只需要取一次就可以了。如果未对齐,也即是这个int数据刚好跨越了取数的边界,取数边界内包括3个字节,剩下1个字节为取数边界外,那么计算机就需要取两次才能把这个int类型的数据全部取到,从而降低了计算机从内存中读取数据的效率,因此,需要进行字节对齐,而字节对齐的关键是确定对齐字节。
目前,在确定对齐字节时,通常将内存中待对齐的目标数据的字节数除以预设取数阈值,得到的结果用浮点数表示,然后加上0.99999999后取整,比如,目标数据的字节数为5,预设取数阈值为2,则将5除以2得到的结果用浮点数表示为2.5,2.5加上0.99999999后得到的结果为3.49999999,最后进行取整得到的整数为3,从而得到对齐字节。
但是,由于上述确定对齐字节的方式是基于浮点运算的,而通过浮点运算得到的结果精度通常较低,且浮点运算的计算过程繁琐,导致字节对齐效率较低,且浮点运算容易消耗计算机资源,造成计算机资源的浪费。
发明内容
本申请实施例提供了一种字节对齐方法、装置及计算机可读存储介质,可以用于解决相关技术中确定对齐字节准确性低、效率低的问题。所述技术方案如下:
第一方面,提供了一种字节对齐方法,所述方法包括:
确定目标字节数的相反数,所述目标字节数为内存中存储的待对齐的目标数据的字节数;
基于所述目标字节数的相反数和预设位移值,确定对齐字节,所述对齐字节用于描述所述目标数据存储的位置;
基于所述对齐字节存储所述目标数据,以完成字节对齐。
可选地,所述确定目标字节数的相反数,包括:
将所述目标字节数转换为二进制数,得到目标二进制数;
确定所述目标二进制数的反码;
将所述目标二进制数的反码加1,得到所述目标字节数的相反数的二进制数。
可选地,所述基于所述目标字节数的相反数和预设位移值,确定对齐字节,包括:
将所述目标字节数的相反数的二进制数右移所述预设位移值后,得到位移二进制数;
确定所述位移二进制数的反码;
将所述位移二进制数的反码加1,得到所述对齐字节的二进制数。
可选地,所述确定目标字节数的相反数之前,还包括:
确定所述目标数据的数据类型;
基于所述目标数据的数据类型和指定函数,确定所述目标字节数。
可选地,所述确定目标字节数的相反数之前,还包括:
确定所述目标数据的数据类型;
当所述目标数据的数据类型为第一指定数据类型时,基于所述目标数据的数据类型,从存储的数据类型与字节数之间的对应关系中获取对应的字节数;
将获取的字节数确定为所述目标字节数。
可选地,所述基于所述对齐字节存储所述目标数据,以完成字节对齐,包括:
在所述内存中以所述对齐字节的整倍数地址为存储所述目标数据的起始地址,存储所述目标数据,以完成所述字节对齐。
第二方面,提供了一种字节对齐装置,所述装置包括:
第一确定模块,用于确定目标字节数的相反数,所述目标字节数为内存中存储的待对齐的目标数据的字节数;
第二确定模块,用于基于所述目标字节数的相反数和预设位移值,确定对齐字节,所述对齐字节用于描述所述目标数据存储的位置;
存储模块,用于基于所述对齐字节存储所述目标数据,以完成字节对齐。
可选地,所述第一确定模块包括:
转换子模块,用于将所述目标字节数转换为二进制数,得到目标二进制数;
第一确定子模块,用于确定所述目标二进制数的反码;
第一运算子模块,用于将所述目标二进制数的反码加1,得到所述目标字节数的相反数的二进制数。
可选地,所述第二确定模块包括:
位移子模块,用于将所述目标字节数的相反数的二进制数右移所述预设位移值后,得到位移二进制数;
第二确定子模块,用于确定所述位移二进制数的反码;
第二运算子模块,用于将所述位移二进制数的反码加1,得到所述对齐字节的二进制数。
可选地,所述装置还包括:
第三确定模块,用于确定所述目标数据的数据类型;
第四确定模块,用于基于所述目标数据的数据类型和指定函数,确定所述目标字节数。
可选地,所述装置还包括:
第三确定模块,用于确定所述目标数据的数据类型;
获取模块,用于当所述目标数据的数据类型为第一指定数据类型时,基于所述目标数据的数据类型,从存储的数据类型与字节数之间的对应关系中获取对应的字节数;
第五确定模块,用于将获取的字节数确定为所述目标字节数。
可选地,所述存储模块用于:
在所述内存中以所述对齐字节的整倍数地址为存储所述目标数据的起始地址,存储所述目标数据,以完成所述字节对齐。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的任一所述方法的步骤。
本发明实施例提供的技术方案带来的有益效果是:在本发明实施例中,可以确定目标字节数的相反数,根据目标字节数的相反数和预设位移值,可以确定对齐字节,之后根据该对齐字节可以存储该目标数据,由于在基于目标字节数和预设位移值确定对齐字节数,未出现浮点运算,从而提高了确定对齐字节的准确度和效率,进而提高了基于对齐字节对齐目标数据的准确度和效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种字节对齐方法的流程图;
图2A是本发明实施例提供的第一种字节对齐装置的结构示意图;
图2B是本发明实施例提供的一种第一确定模块的结构示意图;
图2C是本发明实施例提供的一种第二确定模块的结构示意图;
图2D是本发明实施例提供的第二种字节对齐装置的结构示意图;
图2E是本发明实施例提供的第三种字节对齐装置的结构示意图;
图3是本发明实施例提供的第四种字节对齐装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细的解释说明之前,先对本发明实施例中涉及到的应用场景分别进行解释说明。
目前,当终端需要读取内存中的数据时,如果终端每次可读取4字节的数据,且当前需要读取的目标数据为4字节的数据时,那么当该目标数据在存储时刚好跨越了取数边界,比如,取数边界内包括3个字节,剩下1个字节为取数边界外,终端在读取该目标数据时,第一次只能读取该目标数据的3字节数据,剩下一个字节的数据还需要再次进行读取,从而降低了读取数据的效率。因此,为了提高读取数据的效率,终端通常需要对目标数据进行字节对齐。但是目前进行字节对齐的方式通常需要应用到浮点运算,而浮点运算的精度较低,且计算过程复杂,降低了字节对齐的效率。
基于这种场景,本发明实施例提供了一种能够提高字节对齐精度以及字节对齐效率的字节对齐方法。
在对本发明实施例的应用场景进行介绍之后,接下来将结合附图对本发明实施例提供的字节对齐方法进行详细介绍。
图1是根据一示例性实施例提供的一种字节对齐方法的流程图,参见图1,具体包括如下步骤。
步骤101:终端确定目标字节数的相反数,目标字节数为内存中存储的待对齐的目标数据的字节数。
其中,终端可以将该目标字节数转换为二进制数,得到目标二进制数;并确定目标二进制数的反码;将该目标二进制数的反码加1,得到该目标字节数的相反数的二进制数。
由于二进制数相关的运算中不会出现浮点运算,因此,为了提高后续进行字节对齐的准确性,终端可以将目标字节数转换为二进制数。另外,由于在通常情况下,终端在确定数字A的相反数时,数字A的相反数的二进制数为数字A的反码加1,因此,终端可以在确定目标二进制数的反码后加1,即可得到该目标字节数的相反数的二进制数。
比如,目标字节数为15时,终端将目标字节数15转换为二进制数,得到的目标二进制数为00001111,确定该目标二进制的反码为11110000,加1后得得到的11110001即为15的相反数-15的二进制数。
进一步地,终端确定该目标字节数的相反数之前,还需要确定该目标数据的字节数,也即是,终端需要确定目标字节数。
在一种可能的实现方式中,终端可以判断该目标数据的数据类型,并根据目标数据的数据类型和指定函数,确定该目标字节数。其中,该指定函数可以为sizeof()函数。
需要说明的是,目标数据的数据类型可以为第一指定数据类型,也可以为第二指定数据类型。该第一指定数据类型用于指示结构单一且存储字节数固定的数据,该第一指定数据类型可以事先设置,比如,第一指定数据类型可以包括int、float、double、char、long、long long、short等。第二指定数据类型用于指示结构多样且存储字节数不固定的数据,第二指定数据类型同样可以事先设置,比如,第二指定数据类型可以包括数组、联合、结构体等。
其中,当终端确定目标数据的数据类型为第一指定数据类型时,可以通过指定函数sizeof(类型)确定目标字节数。
比如,当目标数据的数据类型为int,通过sizeof(int)确定的目标字节数为4字节,当目标数据的数据类型为double,通过sizeof(double)确定的目标字节数为8字节。
另外,当终端确定目标数据的数据类型为第二复杂数据类型时,终端同样可以通过指定函数确定目标字节数。
其中,当目标数据的数据类型为数组时,终端需要判断该数组是否在作用域内定义,如果数组是在作用域内定义,则同样可以直接通过指定函数sizeof(数组名)确定目标字节数。当目标数据的数据类型为联合,由于联合类型的数据所占字节数为其中所有元素中所占字节数最大的一个元素所占的字节数,因此,终端可以将目标数据中包括的最大的一个元素所占的字节数确定为目标字节数。也即是,终端可以确定目标数据中单独占用存储字节数最大的元素的数据类型,并通过指定函数sizeof(类型)确定目标字节数。比如,目标数据的数据类型为char、int、double联合的数据类型时,由于数据类型为double的元素所占字节数最大,因此,终端可以通过指定函数sizeof(double)确定该联合的字节数为8字节。当目标数据的数据类型为结构体时,终端同样可以通过指定函数sizeof(结构体)确定目标字节数。
在另一种可能的实现方式中,由于这些第一指定数据类型的数据具有固定占用的存储字节数,因此,终端在确定该目标数据的数据类型为第一指定数据类型时,可以无需使用指定函数,而是根据目标数据的数据类型,从事先存储的数据类型与字节数之间的对应关系中获取对应的字节数,并将获取的字节数确定为目标字节数。
步骤102:终端基于目标字节数的相反数和预设位移值,确定对齐字节,该对齐字节用于描述目标数据存储的位置。
其中,终端可以将该目标字节数的相反数的二进制数右移预设位移值后,得到位移二进制数;确定该位移二进制数的反码;将该位移二进制数的反码加1,得到该对齐字节的二进制数。
由于通常情况下,字节数除以2的N次方就是将字节数的二进制数为向右移N位,比如,15除以8,8为2的3次方,也即是将15的二进制数00001111右移3位。因此,终端为了确定对齐字节,可以将目标字节数的相反数的二进制数右移预设位置值。
需要说明的是,该预设位移值可以事先设置,比如,该预设位移值为2、3等等。
比如,该目标字节数15的相反数-15的二进制数为11110001,预设位移值为3时,可以将该目标字节数的相反数的二进制数11110001向右移动3位,得到位移二进制数为11111110,确定该位移二进制数的反码为00000001,将该反码00000001加1即得到对齐字节的二进制数00000010。
值得说明的是,由于终端是基于位移二进制数确定对齐字节,从而不会出现浮点相关的运算,提高了确定对齐字节的准确性,且基于二进制数的运算都较为简单,从而简化了确定对齐字节的步骤,提高了确定对齐字节的效率。
步骤103:终端基于对齐字节存储该目标数据,以完成字节对齐。
其中,终端可以在内存中以对齐字节的整倍数地址为存储目标数据的起始地址,存储该目标数据,从而完成字节对齐。
比如,当对齐字节为2时,终端可以以2的倍数地址为存储目标数据的起始地址,存储该目标地址。
另外,由于对齐字节是终端在确定位移二进制数的反码后加1得到,因此,可以确定本发明实施例中进行的该字节对齐的类型为字节的取顶对齐。
在本发明实施例中,当终端确定目标数据当前进行字节对齐时,可以将目标字节数转换为二进制数,得到目标二进制数,并确定目标二进制数的反码后加1,得到目标字节数的相反数的二进制数。之后,将该目标字节数的相反数的二进制数右移预设位移值,得到位移二进制数,并将该位移二进制数反码加1后即得到对齐字节的二进制数。由于终端确定对齐字节的过程均是基于二进制数进行的,在对二进制数运算过程中不会出现浮点,从而提高了确定对齐字节的准确度和效率,进而提高了基于对齐字节对齐目标数据的准确度和效率。
在对本发明实施例提供的字节对齐方法进行解释说明之后,接下来,对本发明提供的字节对齐装置进行介绍。
图2A为本发明实施例提供的一种字节对齐装置的框图,参见图2A,该多媒体缓存装置可以由软件、硬件或者两者的结合实现。该装置包括:第一确定模块201、第二确定模块202和存储模块203。
第一确定模块201,用于确定目标字节数的相反数,所述目标字节数为内存中存储的待对齐的目标数据的字节数;
第二确定模块202,用于基于所述目标字节数的相反数和预设位移值,确定对齐字节,所述对齐字节用于描述所述目标数据存储的位置;
存储模块203,用于基于所述对齐字节存储所述目标数据,以完成字节对齐。
可选地,参见图2B,所述第一确定模块201包括:
转换子模块2011,用于将所述目标字节数转换为二进制数,得到目标二进制数;
第一确定子模块2012,用于确定所述目标二进制数的反码;
第一运算子模块2013,用于将所述目标二进制数的反码加1,得到所述目标字节数的相反数的二进制数。
可选地,参见图2C,所述第二确定模块202包括:
位移子模块2021,用于将所述目标字节数的相反数的二进制数右移所述预设位移值后,得到位移二进制数;
第二确定子模块2022,用于确定所述位移二进制数的反码;
第二运算子模块2023,用于将所述位移二进制数的反码加1,得到所述对齐字节的二进制数。
可选地,参见图2D,所述装置还包括:
第三确定模块204,用于确定所述目标数据的数据类型;
第四确定模块205,用于基于所述目标数据的数据类型和指定函数,确定所述目标字节数。
可选地,参见图2E,所述装置还包括:
第三确定模块204,用于确定所述目标数据的数据类型;
获取模块206,用于当所述目标数据的数据类型为第一指定数据类型时,基于所述目标数据的数据类型,从存储的数据类型与字节数之间的对应关系中获取对应的字节数;
第五确定模块207,用于将获取的字节数确定为所述目标字节数。
可选地,所述存储模块203用于:
在所述内存中以所述对齐字节的整倍数地址为存储所述目标数据的起始地址,存储所述目标数据,以完成所述字节对齐。
综上所述,在本发明实施例中,当终端确定目标数据当前进行字节对齐时,可以将目标字节数转换为二进制数,得到目标二进制数,并确定目标二进制数的反码后加1,得到目标字节数的相反数的二进制数。之后,将该目标字节数的相反数的二进制数右移预设位移值,得到位移二进制数,并将该位移二进制数反码加1后即得到对齐字节的二进制数。由于终端确定对齐字节的过程均是基于二进制数进行的,在对二进制数运算过程中不会出现浮点,从而提高了确定对齐字节的准确度和效率,进而提高了基于对齐字节对齐目标数据的准确度和效率。
需要说明的是:上述实施例提供的字节对齐装置在进行字节对齐时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的字节对齐装置和字节对齐方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图3是根据一示例性实施例示出的一种用于字节对齐装置300的框图。例如,装置300可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图3,装置300可以包括以下一个或多个组件:处理组件302,存储器304,电源组件306,多媒体组件308,音频组件310,输入/输出(I/O)的接口312,传感器组件314,以及通信组件316。
处理组件302通常控制装置300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件302可以包括一个或多个处理器320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件302可以包括一个或多个模块,便于处理组件302和其他组件之间的交互。例如,处理组件302可以包括多媒体模块,以方便多媒体组件308和处理组件302之间的交互。
存储器304被配置为存储各种类型的数据以支持在装置300的操作。这些数据的示例包括用于在装置300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件306为装置300的各种组件提供电源。电源组件306可以包括电源管理系统,一个或多个电源,及其他与为装置300生成、管理和分配电源相关联的组件。
多媒体组件308包括在所述装置300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件308包括一个前置摄像头和/或后置摄像头。当装置300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件310被配置为输出和/或输入音频信号。例如,音频组件310包括一个麦克风(MIC),当装置300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器304或经由通信组件316发送。在一些实施例中,音频组件310还包括一个扬声器,用于输出音频信号。
I/O接口312为处理组件302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件314包括一个或多个传感器,用于为装置300提供各个方面的状态评估。例如,传感器组件314可以检测到装置300的打开/关闭状态,组件的相对定位,例如所述组件为装置300的显示器和小键盘,传感器组件314还可以检测装置300或装置300一个组件的位置改变,用户与装置300接触的存在或不存在,装置300方位或加速/减速和装置300的温度变化。传感器组件314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件316被配置为便于装置300和其他设备之间有线或无线方式的通信。装置300可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述图1所示实施例提供的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种字节对齐方法,其特征在于,所述方法包括:
确定目标字节数的相反数,所述目标字节数为内存中存储的待对齐的目标数据的字节数;
将所述目标字节数的相反数的二进制数右移预设位移值后,得到位移二进制数;确定所述位移二进制数的反码;将所述位移二进制数的反码加1,得到对齐字节的二进制数,所述对齐字节用于描述所述目标数据存储的位置,所述预设位移值是基于所述目标字节数预先设置的;
基于所述对齐字节的二进制数存储所述目标数据,以完成字节对齐。
2.如权利要求1所述的方法,其特征在于,所述确定目标字节数的相反数,包括:
将所述目标字节数转换为二进制数,得到目标二进制数;
确定所述目标二进制数的反码;
将所述目标二进制数的反码加1,得到所述目标字节数的相反数的二进制数。
3.如权利要求1所述的方法,其特征在于,所述确定目标字节数的相反数之前,还包括:
确定所述目标数据的数据类型;
基于所述目标数据的数据类型和指定函数,确定所述目标字节数。
4.如权利要求1所述的方法,其特征在于,所述确定目标字节数的相反数之前,还包括:
确定所述目标数据的数据类型;
当所述目标数据的数据类型为第一指定数据类型时,基于所述目标数据的数据类型,从存储的数据类型与字节数之间的对应关系中获取对应的字节数;
将获取的字节数确定为所述目标字节数。
5.如权利要求1所述的方法,其特征在于,所述基于所述对齐字节的二进制数存储所述目标数据,以完成字节对齐,包括:
在所述内存中以所述对齐字节的整倍数地址为存储所述目标数据的起始地址,存储所述目标数据,以完成所述字节对齐。
6.一种字节对齐装置,其特征在于,所述装置包括:
第一确定模块,用于确定目标字节数的相反数,所述目标字节数为内存中存储的待对齐的目标数据的字节数;
第二确定模块,用于基于所述目标字节数的相反数和预设位移值,确定对齐字节的二进制数,所述对齐字节用于描述所述目标数据存储的位置;
存储模块,用于基于所述对齐字节的二进制数存储所述目标数据,以完成字节对齐;
所述第二确定模块包括:
位移子模块,用于将所述目标字节数的相反数的二进制数右移所述预设位移值后,得到位移二进制数,所述预设位移值是基于所述目标字节数预先设置的;
第二确定子模块,用于确定所述位移二进制数的反码;
第二运算子模块,用于将所述位移二进制数的反码加1,得到所述对齐字节的二进制数。
7.如权利要求6所述的装置,其特征在于,所述第一确定模块包括:
转换子模块,用于将所述目标字节数转换为二进制数,得到目标二进制数;
第一确定子模块,用于确定所述目标二进制数的反码;
第一运算子模块,用于将所述目标二进制数的反码加1,得到所述目标字节数的相反数的二进制数。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710923018.2A CN107608714B (zh) | 2017-09-30 | 2017-09-30 | 字节对齐方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710923018.2A CN107608714B (zh) | 2017-09-30 | 2017-09-30 | 字节对齐方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107608714A CN107608714A (zh) | 2018-01-19 |
CN107608714B true CN107608714B (zh) | 2020-06-30 |
Family
ID=61068061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710923018.2A Active CN107608714B (zh) | 2017-09-30 | 2017-09-30 | 字节对齐方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107608714B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110110292B (zh) * | 2018-01-29 | 2023-11-14 | 北京搜狗科技发展有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN110782389B (zh) * | 2019-09-23 | 2023-09-15 | 五八有限公司 | 一种图像数据字节对齐方法和终端 |
CN111597239B (zh) * | 2020-04-10 | 2021-08-31 | 中科驭数(北京)科技有限公司 | 数据对齐的方法及装置 |
CN111737404A (zh) * | 2020-06-26 | 2020-10-02 | 豆盟(北京)科技股份有限公司 | 数据处理方法、装置、设备和计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6075774A (en) * | 1997-11-18 | 2000-06-13 | 3Com Corporation | Method and device for generating a frame check sequence |
CN101047849A (zh) * | 2006-03-28 | 2007-10-03 | 华为技术有限公司 | 离散余弦逆变换方法及其装置 |
CN101882112A (zh) * | 2010-06-25 | 2010-11-10 | 北京中星微电子有限公司 | 四字节字的读取处理方法与装置、解码器 |
CN103907356A (zh) * | 2011-10-28 | 2014-07-02 | 株式会社Gnzo | 字节对齐装置以及字节对齐方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9078275B2 (en) * | 2012-09-05 | 2015-07-07 | Mediatek Inc. | Bluetooth low energy and LTE coexistence enhancements |
-
2017
- 2017-09-30 CN CN201710923018.2A patent/CN107608714B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6075774A (en) * | 1997-11-18 | 2000-06-13 | 3Com Corporation | Method and device for generating a frame check sequence |
CN101047849A (zh) * | 2006-03-28 | 2007-10-03 | 华为技术有限公司 | 离散余弦逆变换方法及其装置 |
CN101882112A (zh) * | 2010-06-25 | 2010-11-10 | 北京中星微电子有限公司 | 四字节字的读取处理方法与装置、解码器 |
CN103907356A (zh) * | 2011-10-28 | 2014-07-02 | 株式会社Gnzo | 字节对齐装置以及字节对齐方法 |
Non-Patent Citations (1)
Title |
---|
在C/C++数据存储中使用字节对齐规则;王文龙;《喀什师范学院报》;20121130;第33卷(第6期);第37-40页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107608714A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200387795A1 (en) | Super network training method and device | |
CN108304475B (zh) | 数据查询方法、装置及电子设备 | |
CN107608714B (zh) | 字节对齐方法、装置及计算机可读存储介质 | |
CN107370772B (zh) | 账号登录方法、装置及计算机可读存储介质 | |
CN107291626B (zh) | 数据存储方法和装置 | |
CN106201734B (zh) | 文件分享方法及装置 | |
CN112042239B (zh) | 偏移指示确定方法和装置、偏移确定方法和装置 | |
US11388652B2 (en) | Method and apparatus for indicating position of cell-defining synchronization signal block and searching for the same, and base station | |
CN111985635A (zh) | 一种加速神经网络推理处理的方法、装置及介质 | |
CN105468606B (zh) | 网页保存的方法及装置 | |
CN112035691A (zh) | 切片图像的细胞标注数据的展示方法及装置、设备和介质 | |
CN109522286B (zh) | 文件系统的处理方法和装置 | |
CN115391601B (zh) | 视频格式的检测方法、索引模型的构建方法及装置 | |
CN107193530B (zh) | 一种生成随机数的方法和装置 | |
US11533728B2 (en) | Data transmission method and apparatus on unlicensed frequency band | |
US11297626B2 (en) | Information indication method and apparatus, base station and user equipment | |
CN107885464B (zh) | 数据存储方法、装置及计算机可读存储介质 | |
CN107704489B (zh) | 读写超时的处理方法、装置及计算机可读存储介质 | |
CN113778687B (zh) | 内存分配信息处理方法、装置、电子设备及存储介质 | |
EP3460717A1 (en) | Method, apparatus, terminal, and computer-readable storage medium for processing fingerprints | |
CN106354657B (zh) | 寄存器访问方法、装置及系统 | |
RU2645590C2 (ru) | Способ и устройство обработки информации | |
CN109032583B (zh) | 数据交互方法及装置 | |
CN114047885A (zh) | 多类型数据的写入方法、装置、设备及介质 | |
CN111241097B (zh) | 处理对象的方法、处理对象的装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |