unsigned short中的一个大坑

2024-01-26 03:08
文章标签 大坑 unsigned short

本文主要是介绍unsigned short中的一个大坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天同学发我一个程序,是干嘛的不清楚,但知道如下程序语句:


然后在其他地方调用write_bits函数前,都会对length_s进行判断,如果大于1024,就退出(不从0x10001处退出)

但是最后程序的运行结果却是从0x1001退出

然后我在这个if中加了如下语句:


惊讶的发现第一个printf输出竟然是-1!不知道你们现在是否明白否?

原来u16是unsign short类型的,根本不会是负数,但你传入的时候却传入了负数,自然会出现一些异常情况

但为什么会传过来了呢?因为其他调用的地方只是对大于1024做了限制,却没有对小于0做限制

所以,如果程序是这样的话,就会出现所谓的bug,在实际产品中,如果出现这样的bug,就有可能被黑客利用,出现意想不到的情况,反正是不好的。

所以,以后要注意哈


这篇关于unsigned short中的一个大坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/645455

相关文章

[LeetCode] 820. Short Encoding of Words

题:https://leetcode.com/problems/short-encoding-of-words/ 题目大意 参考题目 思路 set 集合 将所有word 放入set中,然后遍历所有set中的word,将word的从头的子串都从set中删除,最后统计 set中所有(word 的长度 + 1)(’#’) class Solution {public int minimumL

短时傅里叶变换(Short-Time Fourier Transform, STFT),语音识别

高能预警!!! .wav文件为笔者亲自一展歌喉录制的噪声,在家中播放,可驱赶耗子,蟑螂 介绍 短时傅里叶变换(Short-Time Fourier Transform, STFT)是一种时频分析方法,用于分析非平稳信号的频率成分随时间的变化。与传统的傅里叶变换不同,STFT在处理信号时考虑了时间局部性,使得它能够同时在时间域和频率域上分析信号。 STFT的背景 傅里叶变换可以将信号从时间

关键字之signed和unsigned

生活中的我们发现数据只有正数,比如:年龄,体重,等,但有些数据是有正负数的,比如:温度,海拔等,那么C语言中如何表达正负数呢? 1.signed和unsigned C语言引入signed和unsigned关键字来修饰char、short、int、long等整型家族的类型。 使用signed关键字,表示一个类型带有正负号,包含负值。 使用unsigned关键字,表示该类型不带有正负号,只能表

unsigned int number = -1的输出

例如有这样的定义: unsigned int number = -1; 当你打印的时候,printf("%d",number)则 number是当成一个又符号的数来处理。输出-1 当你这样打印的时候,printf("%u",number)则number当成一个无符号的数来处理。输出65535 小结:    -1 这个数在内存中存着,究竟是有符号的还是无符号

popular short sentences

popular short sentences backward compatibility 向后兼容 archive  文档  posted @ 2017-06-15 16:45 酸奶加绿茶 阅读( ...) 评论( ...) 编辑 收藏

怎么跳出 MySQL 的10个大坑(下)

MySQL · 优化改进· 复制性能改进过程 前言 与oracle 不同,MySQL 的主库与备库的同步是通过 binlog 实现的,而redo日志只做为MySQL 实例的crash recovery使用。MySQL在4.x 的时候放弃redo 的同步策略而引入 binlog的同步,一个重要原因是为了兼容其它非事务存储引擎,否则主备同步是没有办法进行的。 redo 日志同步

怎么跳出 MySQL 的10个大坑(上)

编者按:淘宝自从2010开始规模使用MySQL,替换了之前商品、交易、用户等原基于IOE方案的核心数据库,目前已部署数千台规模。同时和Oracle, Percona, Mariadb等上游厂商有良好合作,共向上游提交20多个Patch。目前淘宝核心系统研发部数据库组,根据淘宝的业务需求,改进数据库和提升性能,提供高性能、可扩展的、稳定可靠的数据库(存储)解决方案。 目前有以下几个方向:单机,提升单

SOMEIP_ETS_064: String_UTF16FIXED_too_short

测试目的: 验证当设备(DUT)接收到一个小于64字节的UTF16FIXED字符串时,是否能够返回错误消息。 描述 本测试用例旨在检查DUT在接收到一个长度小于64字节的UTF16FIXED字符串的SOME/IP消息时,是否能够返回格式错误(MALFORMED_MESSAGE)的错误消息。 测试拓扑: 具体步骤: TESTER:使用echoUTF16FIXED方法发送一个长度小于6

使用matlab的大坑,复数向量转置!!!!!变量区“转置变量“功能(共轭转置)、矩阵转置(默认也是共轭转置)、点转置

近期用verilog去做FFT相关的项目,需要用到matlab进行仿真然后和verilog出来的结果来做对比,然后计算误差。近期使用matlab犯了一个错误,极大的拖慢了项目进展,给我人都整emo了,因为怎么做仿真结果都不对,还好整体的代码都是我来写的,慢慢往下找就找到了问题的来源,全网没有看到多少人把这个愚蠢的错误写出来,我来引入一下。 代码错误的表现:复数向量的虚部被取反,正数变成负数,负数

java string转short_在java中 如何将得到的String转换为Short型

short finalinventoryTime = (short) Integer.parseInt(inventoryTime);