我有一个大小为32字节的字符串(key_str),我想将每个字节存储在uint8_t类型数组key[32]中。
我尝试了以下方法:
string key_str = "00001000200030004000500060007000";
uint32_t key[32] ;
uint8_t* k = reinterpret_cast <uint8_t*>(&key_str[0]);
for(int j = 0; j < 32; j++)
{
key[j]= *k;
k++;
cout<<bitset<8>(key[j])<<endl;
}
但输出的最高有效位(MSB)始终为0011,这是由于字符(0、1、...)的表示方式导致的。那么我该如何将其转换为整数?
输出示例: 00110000 .. 00110001 .. 00110010 ..
std::min(key_str.length(), 32)
。不要使用字面量32,最好使用sizeof(key)/sizeof(*key)
,这样您可以更改数组大小而不必担心忘记调整其他地方。如果您使用std::array
而不是原始数组,则可以使用其size()
成员而不是丑陋但必要的按第一个元素大小除法(请注意,sizeof
始终以字节为单位给出大小!) - Aconcagua