c# 字符与16进制互转
来源:互联网 发布:qq for mac 编辑:程序博客网 时间:2024/06/08 18:54
转载连接: http://blog.csdn.net/ooyyee/article/details/54692953?locationNum=9&fps=1
- #include <stdio.h>
- #include <string.h>
- int strToHex(char *ch, char *hex);
- int hexToStr(char *hex, char *ch);
- int hexCharToValue(const char ch);
- char valueToHexCh(const int value);
- int main(int argc, char *argv[])
- {
- char ch[1024];
- char hex[1024];
- char result[1024];
- char *p_ch = ch;
- char *p_hex = hex;
- char *p_result = result;
- printf("please input the string:");
- scanf("%s",p_ch);
- strToHex(p_ch,p_hex);
- printf("the hex is:%s\n",p_hex);
- hexToStr(p_hex, p_result);
- printf("the string is:%s\n", p_result);
- return 0;
- }
- int strToHex(char *ch, char *hex)
- {
- int high,low;
- int tmp = 0;
- if(ch == NULL || hex == NULL){
- return -1;
- }
- if(strlen(ch) == 0){
- return -2;
- }
- while(*ch){
- tmp = (int)*ch;
- high = tmp >> 4;
- low = tmp & 15;
- *hex++ = valueToHexCh(high); //先写高字节
- *hex++ = valueToHexCh(low); //其次写低字节
- ch++;
- }
- *hex = '\0';
- return 0;
- }
- int hexToStr(char *hex, char *ch)
- {
- int high,low;
- int tmp = 0;
- if(hex == NULL || ch == NULL){
- return -1;
- }
- if(strlen(hex) %2 == 1){
- return -2;
- }
- while(*hex){
- high = hexCharToValue(*hex);
- if(high < 0){
- *ch = '\0';
- return -3;
- }
- hex++; //指针移动到下一个字符上
- low = hexCharToValue(*hex);
- if(low < 0){
- *ch = '\0';
- return -3;
- }
- tmp = (high << 4) + low;
- *ch++ = (char)tmp;
- hex++;
- }
- *ch = '\0';
- return 0;
- }
- int hexCharToValue(const char ch){
- int result = 0;
- //获取16进制的高字节位数据
- if(ch >= '0' && ch <= '9'){
- result = (int)(ch - '0');
- }
- else if(ch >= 'a' && ch <= 'z'){
- result = (int)(ch - 'a') + 10;
- }
- else if(ch >= 'A' && ch <= 'Z'){
- result = (int)(ch - 'A') + 10;
- }
- else{
- result = -1;
- }
- return result;
- }
- char valueToHexCh(const int value)
- {
- char result = '\0';
- if(value >= 0 && value <= 9){
- result = (char)(value + 48); //48为ascii编码的‘0’字符编码值
- }
- else if(value >= 10 && value <= 15){
- result = (char)(value - 10 + 65); //减去10则找出其在16进制的偏移量,65为ascii的'A'的字符编码值
- }
- else{
- ;
- }
- return result;
- }
阅读全文
0 0
- c# 字符与16进制互转
- 字符与16进制互转
- c#中字符与ASCII码转换
- C#与C++字符编码的不同
- C# 字符与字符串的操作
- 笔记-C#字符与运算符
- [C#基础]字符编码与二进制
- C#学习日记-字符与字符串
- C# textbox光标定位与字符插入
- c#中字符与整数转换
- C# 字符分割与出现次数统计
- [C#基础]字符编码与二进制
- C#中半角字符与全角字符的互转
- 《C#精彩实例教程》小组阅读07 -- C#字符与字符串
- c#字符
- C# 格式化字符字符
- C#字串与ISO-8859-1字符互相转换方法
- C# 枚举类型enum与字符间的换换
- Spark RDD 常用算子
- Java Socket学习
- N!高效算法
- 异常信息为: Illegal mix of collations for operation 'concat'
- 腾讯云多个实例之间SSH免密访问
- c# 字符与16进制互转
- APP崩溃的异常捕捉
- 欢迎使用CSDN-markdown编辑器
- 数学建模文章汇总
- 机器学习实战
- 简单的BFS处理——八数码问题
- 分布式编译工具increbuild
- 【二叉树】最近公共祖先【235. Lowest Common Ancestor of a Binary Search Tree】
- Jedis的Publish/Subscribe