长整数装化为16进制的字符串
#include <iostream>
using namespace std;
static const char hex_chars[] = "0123456789abcdef";
string long_to_hex(unsigned long value)
{
string str_hex;
int shift = 0;
unsigned long copy = value;
while (copy)
{
copy >>= 4;
shift++;
}
if (shift == 0)
shift++;
if (shift & 0x01)
shift++; //保证shift至少为2
shift <<= 2;//shift此时变为二进制的bit位数,四的倍数
while (shift > 0)
{
shift -= 4;//一次循环处理四位
str_hex += hex_chars[(value >> shift) & 0x0F];
}
return str_hex;
}
int main()
{
cout<<long_to_hex(56);
return 0;
}
字符串的大小写转换
#include <stdio.h>
#include <stdlib.h>
int to_upper(char *c)
{
if (!c) return 0;
for ( ; *c; c++)
{
if (*c >= 'a' && *c <= 'z')
{
*c &= ~32;
//A-Z:65-90 a-z:97-122 可见不同在于表示32的那个二进制比特位
//小变大相当于去掉32那个比特位,可通过&(~32)实现
}
}
return 0;
}
int to_lower(char *c)
{
if (!c) return 0;
for ( ; *c; c++)
{
if (*c >= 'A' && *c <= 'Z')
{
*c |= 32;
}
}
//大变小相当于增加32那个比特位,可通过|32实现
return 0;
}
int main()
{
char test[]="hello WORLD!";
//原因:此时"hello world!"被当做非常量字符串,放在了栈上,允许修改
//char* test="hello world!"; 为什么这么写会报错?
//原因:此时"hello world!"被当做常量字符串,放在了静态存储区,不允许修改
to_upper(test);
printf("%s\n",test);
to_lower(test);
printf("%s\n",test);
return 0;
}
判定一个字符
#include <stdio.h>
#include <stdlib.h>
//注:参数是字符的ascii值.
//检测给定字符是否为数字字符
int light_isdigit(int c)
{
return (c >= '0' && c <= '9');
}
//检测给定字符是否为十六进制数字字符
int light_isxdigit(int c)
{
if (light_isdigit(c)) return 1;
c |= 32; //统一转化为小写
return (c >= 'a' && c <= 'f');
}
//检测给定字符是否为字母字符
int light_isalpha(int c)
{
c |= 32;
return (c >= 'a' && c <= 'z');
}
//检测给定字符是否为数字字符或字母字符
int light_isalnum(int c)
{
return light_isdigit(c) || light_isalpha(c);
}
int main()
{
printf("%d\n",light_isdigit('8'));
printf("%d\n",light_isdigit(8));
printf("%d\n",light_isalpha('a'));
printf("%d\n",light_isalpha(97));
return 0;
}
分享到:
相关推荐
源码学习价值** 通过研究Zmodem的源码,开发者可以了解到如何构建一个高效的串行通信协议,包括如何设计高效的数据包格式,如何处理错误,以及如何实现流式传输。这对于理解网络通信协议和编写自己的文件传输程序...
Buffer.c 和 Buffer.h 文件很可能是环形缓冲区的C语言实现。在Buffer.h中,可能定义了环形缓冲区的数据结构(如`struct Buffer`),以及相关的操作函数原型,如`init_buffer`用于初始化缓冲区,`write_to_buffer`...
在`aplay.c`源码中,我们可以看到如何初始化ALSA设备、设置音频参数(如采样率、位深度、通道数等)以及如何处理音频数据流。源码中的关键函数包括`main()`,它是程序的入口点,负责处理命令行参数,以及`snd_pcm_...
- **C语言**:显然,这是主要的编程语言,源码就是用C编写的。 - **小程序**:这里可能指的是轻量级或简单的应用程序,比如命令行文本编辑器。 - **心梓知识**:这可能是一个个人或组织的品牌或知识分享标签。 ...
华邦W25系列SPI FLASH读写C语语言动源码(单片机),已在STM32单片机调试测试,可以做为你的学习设计参考。 ain.c文件: #include "stm32f10x_it.h" #include"hw_conf.h" #include "spi_flash.h" void delay(int d);...
在C语言源码中,通常会用到`sendto()`和`recvfrom()`函数进行数据的发送和接收。 - 发送:`sendto(sockfd, buffer, buffer_len, 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));` - 接收:`recvfrom...
本项目“ring_buffer_test_socket_chamberjwf_循环缓冲区_循环缓冲_visualc++_源码”旨在通过C语言实现一个循环缓冲区,并结合线程技术,展示如何在不同线程之间安全地进行数据读写操作。下面我们将详细探讨其中涉及...
9. **缓冲区和数据结构**:`src/buffer.c`、`src/list.c`等文件提供了高效的数据结构和缓冲区管理,优化了数据处理的效率。 通过对librdkafka源码的阅读和分析,我们可以深入了解Kafka客户端的工作原理,包括消息的...
《C语言实现UDP传输系统详解》 ...然而,实际应用中可能需要更复杂的功能,如多线程处理、数据分片重组、流量控制等,这需要进一步学习和实践。记住,理解网络协议和熟练掌握C语言是开发此类系统的基石。
在“C语言编的系统时钟小程序源码”中,`clock.c`文件很可能会包含一个循环,持续更新并打印当前时间。为了实现动态显示,我们可以使用`sleep()`函数,让它在每次更新之间暂停一段时间。这个函数在`<unistd.h>`...
通过深入研究Node.js v7.0.0的源码,我们可以学习到V8引擎的工作原理、Node.js事件驱动模型、模块加载机制、异步编程的最佳实践,以及如何利用新特性来编写更高效、更易于维护的Node.js应用。对于想要成为Node.js...
本压缩包文件包含了一些关于C语言文件编程的源码示例,旨在帮助初学者通过实践提升编程能力和解决问题的能力。 首先,我们需要了解C语言中进行文件操作的基本步骤: 1. 打开文件:使用`fopen()`函数打开一个文件。...
对于更复杂的文件显示和复制算法,比如多线程、异步I/O或者基于流的复制,你可能需要进一步学习线程同步、异步编程等高级主题。在实际应用中,还可以考虑使用系统级别的API,如POSIX的`read`和`write`或Windows的`...
4.2C/C++ 系统库的线程安全性. . . . . . . . . . . . . . . . .. . . . . . . . 85 4.3Linux 上的线程标识. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 89 4.4线程的创建与销毁的守则. . . . . . ....
在"标题"中提到的"C语言标准库源代码.zip"压缩包,包含了C语言中一些常用标准库函数的源码,这对于学习C语言的底层工作原理和深入理解编程概念非常有帮助。 "描述"中提到了几个关键的函数:printf、sprintf、scanf...
主要的源文件可能有“main.c”(主程序入口)、“buffer.c”(缓冲区管理)、“screen.c”(屏幕更新)等。 2. **配置脚本**:如“configure”脚本,用于检查系统环境,配置编译选项,并生成Makefile。用户可以通过...
这个压缩包“串口通讯试验1.0,串口通信实验,C,C++源码.rar”显然是一个用于学习或实践串口通信的资源,包含了C和C++语言的源代码实现。下面我们将详细讨论串口通讯的基本概念、工作原理,以及如何使用C和C++进行串口...
在Windows环境下,UDP(User Datagram Protocol)套接字是网络编程中的一个重要概念,它主要用于实现无...通过理解这些基础概念和函数,你可以分析并学习这两个源码文件,进一步掌握UDP套接字在Windows下的C语言实现。
最后,Node.js的源码分析和学习,需要一定的C、C++基础。这一点是由于Node.js底层是用C++编写的,了解底层语言对于理解Node.js的工作原理和性能优化至关重要。对于有意深入研究Node.js的开发者来说,通过分析源码来...
在本项目中,我们关注的是一个使用C语言编写的Linux文件管理系统。...通过阅读和分析源码,可以了解到如何在Linux环境下实现这些基本操作,这对于系统编程和内核开发的学习者来说是非常宝贵的实践经验。