跨语言使用memcache问题 C++将一块内存放到了memcach中,然后我用java从memcach中拿到这个块内存,为什么得到的长度跟c++不一样呢?我首先将memcach中取出的东西强转成String,然后再.getBytes("GBK");但是拿到的东西不一样。求高人指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java内部采用unicode编码,c++是什么? 应该考虑是编码问题。内存中的字符串,本身就是编好码的二进制数。C++对字符串的数据结构,和Java对字符串的数据结构是不相同的。所以,编程来讲,是不应该进行强制类型转换的。两者数据结构不同,我记得C++的字符串的数据结构中没有字符串长度的变量,如果要得到字符串的长度,先要进行逐个字符的统计;字符串以'\0'作为结束符。Java的字符串数据结构,本身保存了字符串的长度变量,字符串不存在结束符。下面谈谈解决方案(当然,也可能解决不了楼主的问题)。楼主要先弄清楚,内存当中的字符串,到底是什么编码的,如果是C++的WinForm程序,一般是Unicode编码的,其他的程序,就要楼主想办法了。得到内存中字符串的数据以后,不要进行强制类型转换,可以采用String的一个构造器进行对象生成。比如:byte [] strBytes = ...;//内存中字符串的数据。String str = new String(strBytes,"Unicode");//一共两个参数,第一个就是二进制数据,第二个是编码方式。//这样就可以得到Java的字符串了。如果编码正确,下面的语句可以将字符串打印到控制台上。System.out.pringln(str); 关于Swing的JTable的行列融合 刚学到io这一章有个问题实在不知道怎么搞 请帮帮我 在线等 向ArrayList 中添加 自定义类对象 报空指针异常 一个关于多线程的问题! 如何下载java的sdk开发环境 如果子类,父类中有个同名的变量,子类的变量是否会覆盖掉父类中的变量? 请教一下,怎么把Hashtable中的值按照PUT的次序读出来呢? 如何获得磁盘空间? 简单问题 请帮我看一下程序问题出在哪里?(小程序) 求助高手!!!急急急!!!读入一个文本文件,请输出该文件中的最短一行和最长一行(文件行数不定) 是不是ConcurrentHashMap可以替代所有的HashMap
内存中的字符串,本身就是编好码的二进制数。
C++对字符串的数据结构,和Java对字符串的数据结构是不相同的。
所以,编程来讲,是不应该进行强制类型转换的。
两者数据结构不同,我记得C++的字符串的数据结构中没有字符串长度的变量,
如果要得到字符串的长度,先要进行逐个字符的统计;字符串以'\0'作为结束符。
Java的字符串数据结构,本身保存了字符串的长度变量,字符串不存在结束符。下面谈谈解决方案(当然,也可能解决不了楼主的问题)。
楼主要先弄清楚,内存当中的字符串,到底是什么编码的,
如果是C++的WinForm程序,一般是Unicode编码的,其他的程序,就要楼主想办法了。
得到内存中字符串的数据以后,不要进行强制类型转换,可以采用String的一个构造器进行对象生成。
比如:
byte [] strBytes = ...;//内存中字符串的数据。
String str = new String(strBytes,"Unicode");//一共两个参数,第一个就是二进制数据,第二个是编码方式。
//这样就可以得到Java的字符串了。如果编码正确,下面的语句可以将字符串打印到控制台上。
System.out.pringln(str);