无法同时将ascii charcters转换为int和hex

时间:2016-10-28 23:20:34

标签: c++ hex

我有同时将ascii charcters转换为int和hex的问题

                   0               0
               1               1
               2               2
               3               3
               4               4
               5               5
               6               6
               7               7
               8               8
                       9               9

               a               a
               b               b
               c               c
               d               d
               e               e
               f               f
               10               10
               11               11
               12               12
               13               13
               14               14
               15               15
               16               16
               17               17
               18               18
               19               19
               1a               1a
              1b               1b
               1c               1c
               1d               1d
               1e               1e
               1f               1f
                20               20
!               21               21
"               22               22
#               23               23
$               24               24
%               25               25
&               26               26
'               27               27
(               28               28
)               29               29
*               2a               2a
+               2b               2b
,               2c               2c
-               2d               2d
.               2e               2e
/               2f               2f
0               30               30
1               31               31
2               32               32
3               33               33
4               34               34
5               35               35
6               36               36
7               37               37
8               38               38
9               39               39
:               3a               3a
;               3b               3b
<               3c               3c
=               3d               3d
>               3e               3e
?               3f               3f
@               40               40
A               41               41
B               42               42
C               43               43
D               44               44
E               45               45
F               46               46
G               47               47
H               48               48
I               49               49
J               4a               4a
K               4b               4b
L               4c               4c
M               4d               4d
N               4e               4e
O               4f               4f
P               50               50
Q               51               51
R               52               52
S               53               53
T               54               54
U               55               55
V               56               56
W               57               57
X               58               58
Y               59               59
Z               5a               5a
[               5b               5b
\               5c               5c
]               5d               5d
^               5e               5e
_               5f               5f
`               60               60
a               61               61
b               62               62
c               63               63
d               64               64
e               65               65
f               66               66
g               67               67
h               68               68
i               69               69
j               6a               6a
k               6b               6b
l               6c               6c
m               6d               6d
n               6e               6e
o               6f               6f
p               70               70
q               71               71
r               72               72
s               73               73
t               74               74
u               75               75
v               76               76
w               77               77
x               78               78
y               79               79
z               7a               7a
{               7b               7b
|               7c               7c
}               7d               7d
~               7e               7e
               7f               7f
�               80               80
�               81               81
�               82               82
�               83               83
�               84               84
�               85               85
�               86               86
�               87               87
�               88               88
�               89               89
�               8a               8a
�               8b               8b
�               8c               8c
�               8d               8d
�               8e               8e
�               8f               8f
�               90               90
�               91               91
�               92               92
�               93               93
�               94               94
�               95               95
�               96               96
�               97               97
�               98               98
�               99               99
�               9a               9a
�               9b               9b
�               9c               9c
�               9d               9d
�               9e               9e
�               9f               9f
�               a0               a0
�               a1               a1
�               a2               a2
�               a3               a3
�               a4               a4
�               a5               a5
�               a6               a6
�               a7               a7
�               a8               a8
�               a9               a9
�               aa               aa
�               ab               ab
�               ac               ac
�               ad               ad
�               ae               ae
�               af               af
�               b0               b0
�               b1               b1
�               b2               b2
�               b3               b3
�               b4               b4
�               b5               b5
�               b6               b6
�               b7               b7
�               b8               b8
�               b9               b9
�               ba               ba
�               bb               bb
�               bc               bc
�               bd               bd
�               be               be
�               bf               bf
�               c0               c0
�               c1               c1
�               c2               c2
�               c3               c3
�               c4               c4
�               c5               c5
�               c6               c6
�               c7               c7
�               c8               c8
�               c9               c9
�               ca               ca
�               cb               cb
�               cc               cc
�               cd               cd
�               ce               ce
�               cf               cf
�               d0               d0
�               d1               d1
�               d2               d2
�               d3               d3
�               d4               d4
�               d5               d5
�               d6               d6
�               d7               d7
�               d8               d8
�               d9               d9
�               da               da
�               db               db
�               dc               dc
�               dd               dd
�               de               de
�               df               df
�               e0               e0
�               e1               e1
�               e2               e2
�               e3               e3
�               e4               e4
�               e5               e5
�               e6               e6
�               e7               e7
�               e8               e8
�               e9               e9
�               ea               ea
�               eb               eb
�               ec               ec
�               ed               ed
�               ee               ee
�               ef               ef
�               f0               f0
�               f1               f1
�               f2               f2
�               f3               f3
�               f4               f4
�               f5               f5
�               f6               f6
�               f7               f7
�               f8               f8
�               f9               f9
�               fa               fa
�               fb               fb
�               fc               fc
�               fd               fd
�               fe               fe
�               ff               ff
               100               100
               101               101
               102               102
               103               103
               104               104
               105               105
               106               106
               107               107
               108               108

RUN FINISHED; exit value 0; real time: 10ms; user: 0ms; system: 0ms

这是结果

class Segmenter(){
public:
    vector<vector<float>> scanned;
    void modifyAndSort();
    bool sort_fn(const vector<float>&, const vector<float>&);
};

void Segmenter::modifyAndSort(){
    // Modify scanned
    // ...

    sort(scanned.begin(), scanned.end(), sort_fn);
}

bool Segmenter::sort_fn(const vector<float>& x, const vector<float>& y){
    return ((x[0]*x[1]) < (y[0]*y[1]));
}

但如果我把它们放在两个不同的循环中就可以了 我得到ascii和int 然后 ascii和hex 但我希望他们在一起,而不是在一个不同的循环 我想要的是这样的

ascii int hex

任何帮助

1 个答案:

答案 0 :(得分:2)

打印整数的基础设置是“粘性”,因此在您更改之前它将保持设置状态。要像这样混合十进制和十六进制,您需要在打印的每个项目之前明确设置它:

#include <iostream>

using namespace std;
int main() {
    for (int i = 0; i < 265; i++) {
        cout << char(i) << "\t";
        cout << dec << i << "\t";
        cout << hex << i << "\n";
    }
}

另请注意,i已经是int,因此转换为int是不必要的。

同样,我建议完全避免std::endl。 “\ n”对于手头的任务来说足够了,虽然你可能不关心这个特定情况下的速度差异,但它通常要快得多(在其他情况下) ,速度差确实很重要。)

当您使用带有参数的操纵器(例如<iomanip>)时,您只需要包含std::setw(5),而不是那些不接受std::hex等参数的操纵器(奇怪的规则,我知道)。