- 博客(12)
- 收藏
- 关注
原创 避免 inet_ntoa 的陷阱:使用 inet_ntop 安全转换IP地址
使用 inet_ntoa 时要注意它返回的是一个静态指针,连续调用会导致结果被覆盖。使用 inet_ntop 可以避免这个问题,因为它允许你指定一个缓冲区来存储转换后的字符串。希望这篇文章能帮助你更好地理解和使用 inet_ntoa 和 inet_ntop 函数。在处理网络编程任务时,选择正确的函数并正确使用它们是非常重要的。希望这篇文章对你有帮助!
2025-01-16 10:04:48
403
原创 分享一个std::string字节转换时的问题
std::string 在大多数实现中是使用 char 类型来存储字符的,而 char 在很多系统中是有符号的(signed)。将 unsigned char 数组的内容赋值给 std::string 时,如果 std::string 内部使用的是有符号的 char 类型,那么任何大于 127 的值都会变成负数。这是因为有符号 char 的最高位是符号位。在这个例子中,buff[2] 和 buff[3] 可能被解释为有符号的 char 类型,因此它们的值可能被错误地解释为负数。遇到了两种不同的输出结果。
2024-12-13 10:52:07
227
原创 QString处理UTF-8字符乱码问题
但是,如果在读取的数据中包含多字节字符(如 UTF-8 编码的中文),数据可能不是按完整的 UTF-8 字符边界被读取,这些字符被分割在两个或更多的 read() 调用之间,那么可能会遇到乱码问题。因此,如果一个中文字符被分割在两个 read() 调用之间,而你的缓冲区太小无法容纳这个字符的完整表示,那么在下一个 read() 调用时,之前的字符的剩余部分可能已经被新的数据覆盖,导致乱码。但是,即使增加了缓冲区的大小,也不能保证每次 read() 调用都会返回完整的 UTF-8 字符序列,
2024-07-19 17:08:04
948
原创 检测POSIX 线程是否运行结束
当信号参数为 0 时,该函数不会发送任何信号,而是用于检查线程的存在性。实现一个类似std::thread::joinable()函数,用于查看linux c/c++为 POSIX 线程线程是否运行结束,不能阻塞主进程。通常情况下,pthread_kill() 用于向线程发送取消信号 SIGCANCEL 或自定义的线程间通信信号。pthread_kill() 是 POSIX 线程库中的一个函数,用于向指定线程发送信号 sig。如果 sig 为 0,则不发送信号,但会检查线程是否存在。
2024-07-12 17:05:26
247
原创 使用libusb库实时监测usb设备插拔信息
使用libusb库实时监测usb设备插拔信息,信息包括USB插拔状态、USB接口号、设备名称iProduct、厂商名称iManufacturer、设备编号idProduct、厂商编号idVendor、接口编号、USB类型码bDeviceClass,与lsusb -v所获取的信息一致,接口号与lsusb -t显示信息一致,厂商名称id为0时,名称获取不到,用厂商编号填充。
2023-07-12 16:30:52
1378
1
原创 std::string类以值传递传入函数参数,源字符串被修改的情况
很明显,原字符串已经被修改,std::string::c_str() 返回一个 const char* 类型的指针,指向 std::string 内部存储的字符数组副本。分享一个std::string使用当中遇到的问题,众所周知,当std::string对象以值传递的方式传入函数参数时,会走拷贝构造函数,即生成一个副本传入函数,原始字符串的内容不会被修改。所以说,为了防止出现意外情况,修改 std::string 对象的内容最好使用 std::string 的成员函数来进行。
2023-07-12 16:12:55
539
1
原创 sm4加密算法C/C++源码
* @brief 加密文件*/void Encrypt(std::string SrcPath);* @brief 解密文件*/void Decrypt(std::string SrcPath);* @brief 加密字符串 * @param SrcPath (传入) 需要加密的字符串 * @param DestPath (传出) 加密后的密文字符串 **********************************************************************
2022-09-27 00:02:28
6698
5
原创 QTableVIew表格数据实时更新时选中行光标消失的解决方法
模型由继承QAbstractItemModel重写实现,在数据更新前先记录选中行,数据更新后,重新设置选中行class Model : public QAbstractItemModel{ Q_OBJECTpublic: Model( ); ~Model(); int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelInd
2022-06-17 09:27:19
1494
原创 Qt一个主界面添加三个自定义QTableView,QTableView数据动态刷新,不拉伸,显示不全时主界面滚动条滑动查看
主界面继承QWidgettable继承QTableView 数据更新使用继承抽象类QAbstractItemModel考虑到多个表垂直布局,表中数据不同,表格会被拉伸或压缩,查看信息需要分别去滑动每个表的滚动条,所以,为了方便美观,做了如下处理,只拉伸主界面。table1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);//设置表水平可任意拉伸压缩,垂直不可拉升压缩table2->setSizePolicy(QSizePolicy::Ex
2022-06-15 12:11:53
2754
国密算法sm4,可加密数据支持中英文特殊字符,可加密文件或字符串,支持cbc和ecb模式
2022-10-10
Debian10图形界面方式登录
2023-02-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人