java,arduino,C#之间的一些编码转换
1.C#-> Encoding.UTF8.GetBytes( "abc中") ->[97,98,99,228,184,173]
java->byte[] bs= "abc中".getBytes("Utf-8");[97,98,99,-28,-72,-83]
因为 java里的byte是 -128 到 127 ,所以java中的字节数组为负 -28的原码表示跟228是一样的(二进制)
//-----------------------------------------------------------
2.在ardunio针对char,跟 byte做(String)转换结果是不一样的,擦考如下代码,与输出

Serial.begin(9600); delay(100); Serial.println("Ready!"); byte bdata=247; char cdata=(char)bdata; String sb=(String)bdata; String sc=(String)cdata; Serial.println(sb.length()); Serial.println(sc.length()); Serial.println(sb.charAt(0),DEC); Serial.println((byte)sc.charAt(0),DEC);
上面代码的输出
3
1
50, 247 -> "247", charAt(0)=“2” ,'2'的ASCII是50
247 ,char转换成String后将保留原值
另外
byte bArr[4]={0,1,1,0};
String t="";
for(int i=0;i<4;i++){
t +=(String) bArr[i];
}
Serial.println(t.length(),DEC);
结果为2,即字节数组里的0被忽略了
//-------------------------------------------------------------
3.ardunio 中 byte 是0-255, char是-128到127
char c=-18;
byte t=(byte)c;
Serial.println(t,DEC);
将输出238,类似上面的问题1.
下面的是一组等价代码:

void reply(bool isOk,String cmd,String msg){ String rStr=""; if(isOk){ rStr="$FOK-" + cmd +":" +msg +"$E"; mySerial.println("AT+CIPSEND=0," + (String)rStr.length()); delay(10); mySerial.println(rStr); }else{ rStr="$FEE-" + cmd +":" +msg +"$E"; mySerial.println("AT+CIPSEND=0," + (String)rStr.length()); delay(10); mySerial.println(rStr); } } //------------------------- byte bs[4]; long2byte(123456789UL,bs); String msg= (String)((char)bs[0]) +(String)((char)bs[1]) +(String)((char)bs[2]) +(String)((char)bs[3]) ; reply(true,"HB",msg); // String rpStr="$FOK-HB:1234$E"; // mySerial.println("AT+CIPSEND=0," + (String)rpStr.length()); // delay(10); // mySerial.print("$FOK-HB:"); // mySerial.write(bs[0]); // mySerial.write(bs[1]); // mySerial.write(bs[2]); // mySerial.write(bs[3]); // mySerial.println("$E");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2013-11-12 Winform 打开下载的文件
2012-11-12 RDLC报表问题