C++:将 int 转换为字符不会产生正确的值
C++: Casting int To char Doesn't Yield Correct Value
我有一个基本程序,我只是为了测试写作。它应该将每个值从文件(out.txt)中的每个值置于char中。但是,当我在十六进制编辑器中打开时,第11个字节应为0a,但为0d。从这里开始,每个其他值都被推回了回去,因此第12个字节为0a,第13个为0b,一直到第256个为Fe而不是FF,而不是应该。如果有帮助,我正在使用Visual Studio 2017编译和运行代码。
main.cpp
#include <iostream>
#include <stdio.h>
#include <fstream>
int main(){
std::ofstream f("out.txt",std::ios::out);
for(int i = 0; i < 255; i++){
f << (char)i;
}
return 0;
}
out.txt(hex values)
00 01 02 03 04 05 06 07 08 09 0D 0A 0B 0C 0D 0E
0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E
2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E
3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E
4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E
5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E
6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E
7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E
8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E
9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE
AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE
BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE
CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE
DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE
EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE
std::ofstream
试图有所帮助。在文本模式下,当您编写n
时,它实际上会写入rn
,因为这就是Windows用于线路断路的方法。以二进制模式而不是文本模式打开文件:
std::ofstream f("out.txt", std::ios::out | std::ios::binary);
另外,您只写0-254,所以最后一个255丢失了。
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度