社区
C#
帖子详情
C#字符串string运行效率的问题
handi
2004-08-17 10:23:09
字节 b[7000] , 首先每个字节求异或,然后相加到一个字符串:
str = "";
for (int i=0;i<7000;i++)
str += ... byte[i] ^ bt_key.....
可是速度非常慢,请问有什么好的办法吗? 谢谢
...全文
251
13
打赏
收藏
C#字符串string运行效率的问题
字节 b[7000] , 首先每个字节求异或,然后相加到一个字符串: str = ""; for (int i=0;i<7000;i++) str += ... byte[i] ^ bt_key..... 可是速度非常慢,请问有什么好的办法吗? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lexchou
2004-08-17
打赏
举报
回复
To btut2004:
0xFA的F和A都在闭区间[0x0,0xF]中间,一共有16个,二进制分布分别从 0000到1111
0xFA的二进制是11111010
0xFA >>4后就将前4位移到后4位来了,成了 1111
而0xFA & 0xF 就是 11111010 & 1111 =1010了:
11111010
AND 00001111
____________
00001010
所以就这样将前后4位分开了
pipibug
2004-08-17
打赏
举报
回复
lexchou强!
起名叫周lex看来是对字处理方面很自信的周
onlyxu
2004-08-17
打赏
举报
回复
用StringBuilder
handi
2004-08-17
打赏
举报
回复
这段代码是我从C++炒得。C++的运行速度很快的
张海霖
2004-08-17
打赏
举报
回复
看来我要好好补习一下了,不忙的时候我会再看的,现在还无法理解。
lexchou
2004-08-17
打赏
举报
回复
例如tmp为 0xFA
tmp>>4后就等于 0xF了,在HEX_TABLE中第0xF位的是字符 'F'
tmp & 0xf后就等于 0xA了,在HEX_TABLE中第0xA位的字符是'A'
所以这样就完成了Byte -> String的快速转换了
张海霖
2004-08-17
打赏
举报
回复
sb[idx++]=HEX_TABLE[tmp >>4];//你右移它想达到什么目的
sb[idx++]=HEX_TABLE[tmp & 0xf];//执行与操作干什么?
iiboy
2004-08-17
打赏
举报
回复
嗯!
像這樣的處理,也許不會有很大的改進之處吧,除非有更快速的CPU與更多的Memory
lexchou
2004-08-17
打赏
举报
回复
bt_key是从他的代码里抄的。
看他代码,应该是XOR加密。bt_key应该是byte类型的密钥(key)
张海霖
2004-08-17
打赏
举报
回复
学习,看不懂,bt_key是什么?
能具体讲一下吗?
lexchou
2004-08-17
打赏
举报
回复
const string HEX_TABLE="0123456789ABCDEF";
StringBuilder sb=new StringBuilder();
sb.SetLength(7000*2);
byte tmp;
int idx=0;
for(int i=0;i<7000;i++)
{
tmp=byte[i]^bt_key;
sb[idx++]=HEX_TABLE[tmp >>4];
sb[idx++]=HEX_TABLE[tmp & 0xf];
}
MessageBox.Show(sb.ToString());
改用这种方法,效率可以极大提升
lexchou
2004-08-17
打赏
举报
回复
对于你问题的解决方法,可以用StringBuilder来代替String。例如可以先分配好长度,然后在通过索引来访问每个字符。或者用Append方法来添加
lexchou
2004-08-17
打赏
举报
回复
http://community.csdn.net/Expert/TopicView.asp?id=3233892
Java的string、StringBuffer、C++(C++ Builder)的AnsiString、STL String、Delphi的String和汇编写的类StringBuilder、C#的StringBuilder、C#的String
的详细比较
51个
c#
小实例
5. **
字符串
操作**:
字符串
在
C#
中是不可变的,实例可能包括
字符串
连接、查找、替换、截取等操作。 6. **文件与流**:了解如何读写文件,以及使用Stream类进行数据传输,例如XML或JSON的序列化和反序列化。 7. **...
C#
常用的42个类
1. **System.
String
**: 表示不可变的字符序列,是所有
字符串
的基础。它包含丰富的操作方法,如Sub
string
、IndexOf、Replace等。 2. **System.Collections.Generic.List**: 这是一个动态数组,可以存储特定类型的...
fastJson开发包、源码及相关api文档
System.out.println("JSON
字符串
:" + json
String
); // JSON反序列化 User deserializedUser = JSON.parseObject(json
String
, User.class); System.out.println("反序列化后的用户:" + deserializedUser); }...
精通正则表达式
了解如何编写简洁、高效的正则表达式,避免回溯陷阱,是提高代码
运行
效率
的重要一环。 《精通正则表达式》中还可能涵盖一些高级主题,如正则表达式的后向引用、条件语句、递归表达式等,这些都是解决复杂文本处理...
018-
C#
字符串
(
String
)
通过合理运用
C#
提供的
字符串
特性和工具,可以高效解决各种文本处理
问题
,同时避免常见的性能陷阱。通过掌握
C#
字符串
的基础和高级操作,可以高效地进行文本处理,满足各种开发需求。如果
字符串
仅在特定场景下需要...
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章