c++ 十六进制字符串存入文件实例
2016-12-20 17:35
281 查看
c++ 十六进制字符串存入文件:
方法一:
void writeToFile()
{
const char* str = "000000DD000000E00000015C000000E2";
FILE* file = fopen("test.txt", "wb");
assert(file);
size_t len = 0;
uint8_t* buf2 = ConvertToBinBuf(str, &len);
fwrite(buf2, 1, len, file);
free(buf2);
fclose(file);
printf(".......................\n");
}
size_t ConvertHexStrToInt(const char* hex_str, size_t length)
{
size_t sum = 0;
for (size_t i = 0; i < length; ++i)
{
int asc = (int)hex_str[i];
size_t r1 = (asc & 0x40) ? (asc & 0x0F) + 0x9 : (asc & 0x0F);
sum += (r1*pow(16, length - i - 1));
}
return sum;
}
uint8_t * ConvertToFileBuf(const char* hex_str, size_t *buf_size)
{
if (!hex_str)
{
*buf_size = 0;
return NULL;
}
//1.偶数个
size_t len = strlen(hex_str);
assert(!(len % 2));
*buf_size = len / 2;
uint8_t* buf = (uint8_t*)malloc(*buf_size);
for (size_t i = 0, j = 0; i < len; i += 2, ++j)
{
uint8_t value = (uint8_t)ConvertHexStrToInt(hex_str + i, 2);
buf[j] = value;
}
return buf;
}
方法二:
void writeToFile()
{
uint8_t buf[] =
{
0x00, 0x00, 0x00, 0xDD,
0x00, 0x00, 0x00, 0xE0,
0x00, 0x00, 0x01, 0x5C,
0x00, 0x00, 0x00, 0xE2
};
FILE* file = fopen("test.txt", "wb");
assert(file);
size_t len = 16;
fwrite(buf, 1, len, file);
fclose(file);
printf(".......................\n");
}
方法一:
void writeToFile()
{
const char* str = "000000DD000000E00000015C000000E2";
FILE* file = fopen("test.txt", "wb");
assert(file);
size_t len = 0;
uint8_t* buf2 = ConvertToBinBuf(str, &len);
fwrite(buf2, 1, len, file);
free(buf2);
fclose(file);
printf(".......................\n");
}
size_t ConvertHexStrToInt(const char* hex_str, size_t length)
{
size_t sum = 0;
for (size_t i = 0; i < length; ++i)
{
int asc = (int)hex_str[i];
size_t r1 = (asc & 0x40) ? (asc & 0x0F) + 0x9 : (asc & 0x0F);
sum += (r1*pow(16, length - i - 1));
}
return sum;
}
uint8_t * ConvertToFileBuf(const char* hex_str, size_t *buf_size)
{
if (!hex_str)
{
*buf_size = 0;
return NULL;
}
//1.偶数个
size_t len = strlen(hex_str);
assert(!(len % 2));
*buf_size = len / 2;
uint8_t* buf = (uint8_t*)malloc(*buf_size);
for (size_t i = 0, j = 0; i < len; i += 2, ++j)
{
uint8_t value = (uint8_t)ConvertHexStrToInt(hex_str + i, 2);
buf[j] = value;
}
return buf;
}
方法二:
void writeToFile()
{
uint8_t buf[] =
{
0x00, 0x00, 0x00, 0xDD,
0x00, 0x00, 0x00, 0xE0,
0x00, 0x00, 0x01, 0x5C,
0x00, 0x00, 0x00, 0xE2
};
FILE* file = fopen("test.txt", "wb");
assert(file);
size_t len = 16;
fwrite(buf, 1, len, file);
fclose(file);
printf(".......................\n");
}
相关文章推荐
- [C/C++]_[十六进制字符串转换数值并写入文件]
- [C/C++]_[十六进制字符串转换数值并写入文件]
- 将一个十六进制字符串转换为十进制数值的问题|| 以及C++中string转换成char*|| c++文件按行输入
- C++/VC/MFC字符串/文件加解密
- 用思维导图和实例学习C++之一——字符串处理
- C# 把图片转换成字符串存入.txt文件中,并从.txt中读出生成图片
- 用flex生成C++的文件实例分析
- C++中头文件和类的实例的大小之间的关系
- c++ 读出文件中的整形数并排序的实例
- 用思维导图和实例学习C++之一——字符串处理
- 用思维导图和实例学习C++之一——字符串处理
- C++ 读写文件实例总结 (StringToken 为单位读取 以及char为单位读取)
- 【头文件】c++实现字符串
- [C++]DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
- c++两个常用函数:1.二进制字符串2 hex(十六进制)。2. 栈变量字符串2堆变量
- 用思维导图和实例学习C++之一——字符串处理
- 01 怎样在C++/CLI中使用资源文件里的String Table中字符串对应的值
- [代码实例]字符串近似匹配算法 C++
- C++简单文件操作实例
- C++ 简单的文件加密和解密 实例