如何将字符串在内存中的原始数据读到字符数组里面?

时间:2023-01-04 14:28:24
在vb里面,定义一个byte数组,然后赋值一个字符串就行了。
类似下面代码
Sub dd()
    Dim b() As Byte, str
    str = "中国"
    b = str
End Sub

这样我就可以通过b数组直接观察字符串内存的原始数据了。

类似上面vb代码功能,我现在需要把字符串在内存中存储的实际数据读到字节数组里面,哪位大神知道C#代码怎么写呢?

谢谢!

6 个解决方案

#1


byte[] bs1 = Encoding.UTF8.GetBytes("");
byte[] bs2 = Encoding.GetEncoding("GB2312").GetBytes("");


都是字符串转byte[] 显然不同的编码格式可能结果不一样

不太清楚C#怎么得到字符串的【内存原始数据】

#3


字符串是在内存上分配的是内容地址引用(指针),它的具体值实际上是分配到托管堆上的,不能说它的数据是”原始数据“,从它声明之后就表示了”真实“的数据,只不过我们的获取是通过地址引用来获取的。所以按着一般的数组操作添加就可以。

PS:个人观点,欢迎指正。

#4


引用 2 楼 xuzuning 的回复:
如何:获取变量的地址(C# 编程指南) 


我想想vb一样,修改byte[]数组,就能改变字符串的内容,这个怎么做呢?

#5


引用 4 楼 liucqa 的回复:
Quote: 引用 2 楼 xuzuning 的回复:

如何:获取变量的地址(C# 编程指南) 


我想想vb一样,修改byte[]数组,就能改变字符串的内容,这个怎么做呢?

给string赋值,字符串内容就被修改了
感觉不需要通过byte[]数组来转换呀

#6


引用 5 楼 xian_wwq 的回复:
Quote: 引用 4 楼 liucqa 的回复:

Quote: 引用 2 楼 xuzuning 的回复:

如何:获取变量的地址(C# 编程指南) 


我想想vb一样,修改byte[]数组,就能改变字符串的内容,这个怎么做呢?

给string赋值,字符串内容就被修改了
感觉不需要通过byte[]数组来转换呀


你没明白我在说啥,我的意思是把字节数组指针指到字符串上,这样修改字节数组,字符串就跟着变了。本质是对内存的操作。

现在已经解决了,谢谢回答。

#1


byte[] bs1 = Encoding.UTF8.GetBytes("");
byte[] bs2 = Encoding.GetEncoding("GB2312").GetBytes("");


都是字符串转byte[] 显然不同的编码格式可能结果不一样

不太清楚C#怎么得到字符串的【内存原始数据】

#2


#3


字符串是在内存上分配的是内容地址引用(指针),它的具体值实际上是分配到托管堆上的,不能说它的数据是”原始数据“,从它声明之后就表示了”真实“的数据,只不过我们的获取是通过地址引用来获取的。所以按着一般的数组操作添加就可以。

PS:个人观点,欢迎指正。

#4


引用 2 楼 xuzuning 的回复:
如何:获取变量的地址(C# 编程指南) 


我想想vb一样,修改byte[]数组,就能改变字符串的内容,这个怎么做呢?

#5


引用 4 楼 liucqa 的回复:
Quote: 引用 2 楼 xuzuning 的回复:

如何:获取变量的地址(C# 编程指南) 


我想想vb一样,修改byte[]数组,就能改变字符串的内容,这个怎么做呢?

给string赋值,字符串内容就被修改了
感觉不需要通过byte[]数组来转换呀

#6


引用 5 楼 xian_wwq 的回复:
Quote: 引用 4 楼 liucqa 的回复:

Quote: 引用 2 楼 xuzuning 的回复:

如何:获取变量的地址(C# 编程指南) 


我想想vb一样,修改byte[]数组,就能改变字符串的内容,这个怎么做呢?

给string赋值,字符串内容就被修改了
感觉不需要通过byte[]数组来转换呀


你没明白我在说啥,我的意思是把字节数组指针指到字符串上,这样修改字节数组,字符串就跟着变了。本质是对内存的操作。

现在已经解决了,谢谢回答。