c++ - 无符号长字符串以二进制形式附加 ascii 值。C++
问题描述
我正在寻找一种简单地将 text[i] 的 ASCII 值附加到无符号长整数的方法。
例如:
字符串某事=“abc”;
ASCII 值为 97、98、99。
我不是想得到 97, 98, 99 的总和使其 294 它应该是6 382 179。
编辑
为了澄清:意味着附加的值是 ASCII 值的 8 位:0b01100001 + 0b01100010 + 0b01100011 使其成为:0b011000010110001001100011 = 6 382 179。
#include <iostream>
#include <string>
using namespace std;
unsigned long message(string text){
unsigned long temp=0;
for (int i = 0; i != text.size(); i++)
{
temp += int(text[i]);
}
return temp;
}
int main(){
string something = "abc";
cout << message(something);
return 0;
}
解决方案
在添加新位之前,您需要左移运算符来移动现有位
unsigned long temp = 0;
for (int i = 0; i != text.size(); i++)
{
temp <<= 8;
temp += text[i];
}
return temp;
推荐阅读
- typescript - 在打字稿中使用对象键作为类型
- java - MongoDB SocketException::连接重置
- regex - Bash Sed 正则表达式 - 如何在不干扰其他 NUMBER:NUMBER 格式的情况下分隔 IP:PORT?
- reactjs - React setState 将数组中的所有项目推送到状态
- c++ - 堆栈结合了pop()和top()?
- python - 如何使用 tweepy 获取超过 7 天的推文
- javascript - bagisto elevatezoom 无法正常工作?
- mysql - MySql Workbench:mysqldump 工具的路径可以在 docker 容器内吗?
- python - 为什么这个正则表达式返回一个空列表?
- jquery - 需要帮助将传统轮询函数转换为长轮询函数