本文重点解释write跟print最大区别

因为书本和网文没有对print和write核心区别解释得很清晰, 有些人不是很理解,我写的内容会对一些初学者给予帮助!更加好去使用这两个函数

print输出结论:

print输出的是----字符
逐个字符转成对应ASCII码的10进制数,发送出去.如包含多个字符,均按每一个自身独立ASCII码按顺序发送出去..

假设发送 ' '形式的字符, 'a'中的a字符将会根据ASCII码编码转成10进制97,然后将对应二进制1100001发送出去,如接收方显示是16进制数将会是61. 必须谨记, 不论数据表现方法是什么进制,他都是会转成10进制 再将此数据进行每个字符的ASCII码转换处理

例:
int a = 9734;

输出:

Serial.print(a);

Serial.print('a');

char c[4]="abcd";
--------------------------
变量a输出结果是39 37 33 34

'a'输出结果是61

char c    输出结果是61 62 63 64

值得注意的是, 数值请不要大于数据类型,否则溢出后,输出的数值将会异常.
例:
int a = 973411;    //溢出

输出结果是2D 39 36 32 39

--------进制形式输出的方式
根据进制转换后的字符,逐个字符转换成ascii码,以16进制形式逐个输出

int a = 9734;

Serial.print(a,BIN);//2进制是10011000000110 以ASCII编码输出16进制 31 30 30 31 31 30 30 30 30 30 30 31 31 30
Serial.print(a,OCT);//8进制是23006.按照ASCII编码输出16进制32 33 30 30 36 
Serial.print(a,DEC);//10进制是9734,按照ASCII编码输出16进制39 37 33 34
Serial.print(a,HEX);//10进制是2606,按照ASCII编码输出16进制32 36 30 36

write输出结论:
write 输出的是----字节
"满8位,高位溢出".不论数值是多少只保留最低8位的2进制数据. 然后转换成16进制输出.

例:
int a=973411;
int b=2436;
int c = 60;
char d ='a';

输出:
Serial.write(a);

Serial.write(b);

Serial.write(c);

Serial.write(d);

输出结果16进制:    a = 63  b = 84  c = 3C d= 61

为什么输出是这样?

10进制973411的16进制是eda63     对应二进制1110 1101 1010 0110 0011,低8位0110 0011
10进制2436的16进制是984     对应二进制1001 1000 0100,低8位1000 0100
10进制60的16进制是3C        对应二进制  11 1100  (8位以下全部输出)
'a'的16进制是61            对应二进制 110 0001  (8位以下全部输出)
(  '  ' 内容代表字符,程序会先将该字符a转成10进制97,也就是二进制110 0001)

write过程,把数据转为2进制,保留最低8位的2进制数据.输出到串口. 
然后根据接收方是16进制还是ASCII去转换,作出显示/接收 .
                                                          
如果以HEX显示:     串口收到是 63    84      3C   61
如果以ascii显示: 串口收到是 c    \x84     <    a

注意的是ascii显示,等于多了一重步骤,接收方转成ascii码对应的字符显示出来.
其中因为16进制84在ascii码中是不存在的,所以接收方会显示乱码或者直接显示16进制数0x84

write使用比较常见场合:
传输数据,UTF8转GB码, 遥控器编码发送等等..

例如转GB码
UTF8 假如"我"字16进制编码是 E6 88 91    GB2312码是CE D2
其中UTF8转GB码,可以对编码用数组保存16进制数,然后用serial.write(buf,len)语法, 把相应的CE D2发送到中文屏幕,就会显示"我"字

arduino中print()跟write()最大区别和注意事项 (最详细)相关推荐

  1. C++中print和printf的区别

    print与printf的区别 1,print 中不能使用%s ,%d 或%c: 2,print 自动换行,printf 没有自动换行. 转载于:https://www.cnblogs.com/yun ...

  2. Python 中print 和return 的区别

    1.print() print()函数的作用是输出数据到控制台,就是打印在你能看到的界面上. 2.return return语句[表达式]退出函数,选择性地向调用方返回一个表达式.不带参数值的retu ...

  3. Java中print()\println()\printf()的区别及用法

    print()\println()\printf()的区别: print将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后. println 将它的参数显示在命令窗口,并在结尾加上换 ...

  4. java中print()和println()的区别

    print()和println()的区别在于print会在同一行输出 [不换行] : 而println()每次输出,下一次输出都会换一行,即在下一行输出 [也就是换行].

  5. php class中public,private,protected的区别以及实例分析

    本篇文章是对php class中public,private,protected的区别以及实例进行了详细的分析介绍,需要的朋友参考下 一,public,private,protected的区别 pub ...

  6. Linux中EXT3与EXT4的区别!

    在Linux系统中,日志文件系统分为很多种类型,其中比较典型的是:ext3.ext4.xfs等,那么Linux中EXT3与EXT4的区别有哪些?以下是详细的内容介绍. Linux Kernel自2.6 ...

  7. Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项

    Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...

  8. Arduino中Serial.print()与Serial.write()函数的区别,以及串口通信中十六进制与字符串的收发格式问题和转换过程详解

    1.串口通信中十六进制和字符数据的区别 串口收发数据时字符.十六进制.二进制格式详细区分 ASCII码查询表格 在使用串口发送数据时可以选择字符串(ASCII)发送或者十六进制(Hex)发送,通常情况 ...

  9. go语言中fmt包中Print、Printf、Println输出相关函数的区别

    go语言中fmt包中Print.Printf.Println输出相关函数的区别 区别: Print系列函数将内容输出到系统的标准输出.其区别:Print函数式直接输出内容,Printf函数支持格式化输 ...

  10. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

最新文章

  1. c语言关键字_C语言初学者必须掌握的关键字!
  2. 011_Vue自定义指令
  3. 【UGV】Mec 麦轮版小车驱动程序示例
  4. 服务器e5系列和e5v4系列,“芯”力量:四款至强E5 v4双路服务器横评
  5. 启动oracle00119,oracle启动报ORA-00119错误
  6. 持续更新的Zookeeper知识总结
  7. js符号转码_JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解...
  8. 华侨大学计算机学院2019,华侨大学计算机科学与技术学院2019年非全日制研究生复试成绩(第四批)...
  9. 华为 HR 内网 5000 字实名控诉:研发兄弟一个月加班 160 小时却被说不努力...
  10. C#把汉字转换成16进制(HEX)并向串口发送数据
  11. Citrix XenApp/XenDesktop 7.15 LTSR发布
  12. Python数据挖掘工具总结
  13. html验证码自动刷新,验证码输入错误后自动刷新验证码
  14. 手写RPC(五) 核心模块网络协议模块编写 ---- 自定义协议
  15. 传统蓝牙base on pincode配对以及安全简单配对(Secure Simple Pairing)流程介绍
  16. python读取oracle数据库中文乱码_PL/SQL连接Oracle数据库,中文乱码,显示问号
  17. 如何手动下载并安装 Visual Studio Code 的 SAP Fiori tools - Extension Pack 扩展
  18. iOS-Undefined symbols for architecture x86_64-- 调适萤石摄像头驱动程序--萤石开放平台
  19. 他借无人机代人工巡检光伏场 热成像解析45万光伏板优劣
  20. vue3+Ts使用pinia(vue-lic搭建项目)

热门文章

  1. 【有奖倒计时】带你走进AI应用创新大赛十强背后的故事!
  2. 什么是图形加速卡(二)
  3. 微信小程序获取的微信头像模糊或者无法显示
  4. 高盛最新调查:Python超过汉语成为未来最重要技能,你准备学哪种编程语言?...
  5. 深入解析设置磁盘写保护
  6. 苹果手游代充灰色产业深度揭秘
  7. D. 3-Coloring(思维+构造)
  8. 停车场车牌识别摄像机,传统提成行业颠覆者
  9. [Vmware]VCSA部署及遇到的问题
  10. css--打字机效果