请大侠们仗义一把!解决方案
请大侠们仗义一把!!!
BYTE 可以标示 0 - 255 之间的数值. 在做数值运算的时候BYTE可以很好的胜任. 然而当BYTE遇到了stringstream的时候. 万恶的事情发生啦!
int theNumber = 123;
char theChar = "ABC";
BYTE theBYTE = 0;
stringstream theStr;
theStr << ">_<" << theNumber << theBYTE << theChar;
现在的theStr是什么内容呢?是">_<1230ABC"嘛? 很不幸的是把theStr以字符串形式输出时, 就会发现输出的只有">_<123". 后面那部分到那里去了呢? BYTE = unsigned char, stringstream 非常忠实的将BYTE视为char处理了, 所以没有将theBYTE转换成数字0, 而是直接将ASCII的0输出了, 当然 ASCII的0就是字符串结束符……
在delphi中如何处理这个问题?
------解决方案--------------------
唉~加密后的内容要转成string然后hex后发送,一看这哥们就没做过加密,怎么能用string发送啊~,原理我说过了没办法教你个办法吧
1字符替换,发送前自己写个函数将#0之类的特殊字符进行替换,但是要注意替换后对方接收后要再换回来,缺点是可能会和秘文中其他特殊字符重复,通常可以考虑秘文中不常出现的中文和标点
2 把加密后的内容的ascii码转为数字字符串后发送,约定特殊字符做分格例如空格之类的,缺点是大大增加了数据发送量
3 正确的方法是修改代码,将字符串接收方式改为pchar或者byte数组发送
4 带我抽写代码那家伙俩耳光,哪有这么发送秘文的,误人子弟
BYTE 可以标示 0 - 255 之间的数值. 在做数值运算的时候BYTE可以很好的胜任. 然而当BYTE遇到了stringstream的时候. 万恶的事情发生啦!
int theNumber = 123;
char theChar = "ABC";
BYTE theBYTE = 0;
stringstream theStr;
theStr << ">_<" << theNumber << theBYTE << theChar;
现在的theStr是什么内容呢?是">_<1230ABC"嘛? 很不幸的是把theStr以字符串形式输出时, 就会发现输出的只有">_<123". 后面那部分到那里去了呢? BYTE = unsigned char, stringstream 非常忠实的将BYTE视为char处理了, 所以没有将theBYTE转换成数字0, 而是直接将ASCII的0输出了, 当然 ASCII的0就是字符串结束符……
在delphi中如何处理这个问题?
------解决方案--------------------
唉~加密后的内容要转成string然后hex后发送,一看这哥们就没做过加密,怎么能用string发送啊~,原理我说过了没办法教你个办法吧
1字符替换,发送前自己写个函数将#0之类的特殊字符进行替换,但是要注意替换后对方接收后要再换回来,缺点是可能会和秘文中其他特殊字符重复,通常可以考虑秘文中不常出现的中文和标点
2 把加密后的内容的ascii码转为数字字符串后发送,约定特殊字符做分格例如空格之类的,缺点是大大增加了数据发送量
3 正确的方法是修改代码,将字符串接收方式改为pchar或者byte数组发送
4 带我抽写代码那家伙俩耳光,哪有这么发送秘文的,误人子弟