字符传 转换 成 Byte

doney_dongxiang 2009-01-05 08:07:04

现在 我有这么一个 字符创
String aa = "-119|80|78|71|-13|-10|";

我想 生成一个 byte aa = new [] {-119,80,78,-13,-10,};

byte 数组 中的 每个值 需与 字符传中的 每个数值 相同 并且 顺序 不变,

要求 用 C# 完成

...全文
154 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangluhy 2009-01-06
  • 打赏
  • 举报
回复
java中的BYTE为-128~127
C#中的为0~127
但我试过用Java做的客户端上传至用C#做的服务器数据。发现其中数据会自动修正
如:Java:{65,-85,99,44} 转至C#:{65,171,99,44}

但是在java中将数据转换为BYTE时,数据是反转的
如同样一个数据21.423423f
在Java中转为BYTE[]为{65,-85,99,44}
但到了C#中转为BYTE[]则为{44,99,171,65}

所以我当时是在客户端(java)用一个函数将BYTE[]中的数据反转过来后,再发送到服务器端,
这样才成功的。

希望对你有帮助
龙宜坡 2009-01-06
  • 打赏
  • 举报
回复
0——127
qiying1988 2009-01-06
  • 打赏
  • 举报
回复
up
doney_dongxiang 2009-01-06
  • 打赏
  • 举报
回复
其实 我这是 网络过程中 传输图片 ,我吧图片 转成 字节流 然后 每个字节 中间添加| 组合成字符传 就是-119|80|78|71|-13|-10| 这种形式


客户段接受后,要还原后Byte【】 数组 ,这种方式 我在Java中实现了啊 能够 显示图片 ,到了 C# 中 不支持了啊 ,不会是 Java 中的 Byte 和

C# 中的 byte 范围不一样吧
lunat 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hustcyb 的回复:]
已经解决得差不多了,我来一段Linq的代码:

C# code
string source = "-119|80|78|71|-13|-10|";
sbyte[] array = (from part in source.Split('|')
where !string.IsNullOrEmpty(part)
select Convert.ToSByte(part)).ToArray();
[/Quote]

很好 很强大 第一次见Linq代码 .... 汗一个
hustcyb 2009-01-05
  • 打赏
  • 举报
回复
已经解决得差不多了,我来一段Linq的代码:

string source = "-119|80|78|71|-13|-10|";
sbyte[] array = (from part in source.Split('|')
where !string.IsNullOrEmpty(part)
select Convert.ToSByte(part)).ToArray();
cgpu456 2009-01-05
  • 打赏
  • 举报
回复
JF呀
可以结贴了
xman81 2009-01-05
  • 打赏
  • 举报
回复
可以结贴啦
我姓区不姓区 2009-01-05
  • 打赏
  • 举报
回复
正如4楼所说,byte的范围是0-255,哪来的负数?
下面是转成int的,参考一下吧:

string aa = "-119|80|78|71|-13|-10|";
int[] result = Array.ConvertAll<string,int>(aa.Split('|'),Convert.ToInt32);
Fibona 2009-01-05
  • 打赏
  • 举报
回复
你的这个要求直接进行字符串拆分就行,你得到的根本上不是byte


byte
0 到 255
无符号 8 位整数
System.Byte



string [] arr=str.split('|');
List<int> list=new List<int>();
foreach(string s in arr)
{
list.Add(int.Parse(s));
}

hangang7403 2009-01-05
  • 打赏
  • 举报
回复
我同4楼的有同样的疑问
lunat 2009-01-05
  • 打赏
  • 举报
回复
咳咳 又写错了
bytes[i] = (byte)int.Parse(arr[i]);
lunat 2009-01-05
  • 打赏
  • 举报
回复
写错了...
bytes[i] = new (byte)int.Parse(arr[i]);
lunat 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 doney_dongxiang 的帖子:]

现在 我有这么一个 字符创
String aa = "-119|80|78|71|-13|-10|";

我想 生成一个 byte aa = new [] {-119,80,78,-13,-10,};

byte 数组 中的 每个值 需与 字符传中的 每个数值 相同 并且 顺序 不变,

要求 用 C# 完成


[/Quote]
string[] arr = aa.Split('|');
byte[] bytes = new byte[arr.Length];
for(int i = 0 ;i < arr.Length; i++)
{
bytes[i] = new byte(int.Parse(arr[i]));
}
没测试 ~~~~
startstartsvip 2009-01-05
  • 打赏
  • 举报
回复
冒昧问一下 byte 有正负?
zhouxing_24 2009-01-05
  • 打赏
  • 举报
回复
晕,这个你就根据你字符串中的|符号截取就可以了.比如截取第一个|他之前的字符串就是-119.之后把他转换类型存储在数组里就可以了!
benyouyong 2009-01-05
  • 打赏
  • 举报
回复
无语~~~
wuyq11 2009-01-05
  • 打赏
  • 举报
回复
byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧