C# 将字节[]编码为字符串

C# 将字节[]编码为字符串,c#,.net,encoding,C#,.net,Encoding,我试图通过Tizen.NET上的蓝牙发送字节,但是该接口只允许我发送字符串而不是字节数组。所以我现在需要做的是: 发送方:字节数组->字符串->一些奇怪的Tizen逻辑 接收器:将流读取到uint8 现在我正在努力找出我需要什么编码,以便在另一端接收我想要的字节 我尝试了几种方法,但我无法找出造成这种情况的原因。我想我可能需要Windows-1252编码,在0x7F之前,我会在接收器端接收正确的对应uint8。但所有其他的结果都是奇怪的符号,例如0xFE结果为¾ 我发现这张桌子: 其中几乎列出了

我试图通过Tizen.NET上的蓝牙发送字节,但是该接口只允许我发送字符串而不是字节数组。所以我现在需要做的是:

发送方:字节数组->字符串->一些奇怪的Tizen逻辑

接收器:将流读取到uint8

现在我正在努力找出我需要什么编码,以便在另一端接收我想要的字节

我尝试了几种方法,但我无法找出造成这种情况的原因。我想我可能需要Windows-1252编码,在0x7F之前,我会在接收器端接收正确的对应uint8。但所有其他的结果都是奇怪的符号,例如0xFE结果为¾

我发现这张桌子: 其中几乎列出了我所遇到的实际/预期的角色,但我没有找到解决方法


谢谢你的帮助

如果您所说的是SendData(字符串),那么新的API发送字节将在下一个.NET API版本中引入。
请参阅本期网页。


谢谢

UTF和Windows编码与将字符串转换为字节有关,而不是相反。无法将随机字节转换为Unicode字符串-某些字节序列无效。其他设备期望什么?什么样的字符串,什么样的格式?这些字节到底包含什么?如果设备只能接收字符串,为什么您希望设备能够理解这些数据?将字节数组转换为字符串的一种常见方法是使用Base64编码。你可以用。但是接收者必须知道这一点。其他设备需要字节,但Tizen不允许我发送字节。因此,我所能影响的只是我将字节转换为字符串的方式,然后在发送之前将其转换回字节,对此我没有任何见解。我想发送的字节在0到254之间,我希望另一端的字节范围相同。因为字节
0xFE
会导致
þ
,显然,UTF-8编码用于将字符串转换为字节(而不是Windows-1252)。并非每个字节序列都是有效的UTF-8编码字符串;许多是无效的。这意味着不可能从UTF-8编码的字符串生成所有字节序列。因此,您无法使用给定的API实现所需的功能(如果编码无法更改)。