แก้ไขตัวคั่นข้อความ

ฉันค่อนข้างใหม่กับ FIX-Protocol

ตัวคั่นสำหรับข้อความ FIX-Protocol บางครั้งจะแสดง ^ และในบางครั้ง | Wikipedia สำหรับ FIX-Protocol บอกว่า [SOH] ( ‹Start of Header› สำหรับ hex 0x01 ) เป็นอักขระ

กรุณาอธิบายความหมายของสิ่งเดียวกัน

ตัวอย่างเช่น ข้อความ FIX-Protocol สามารถแสดง ภาพ เป็นได้

8=FIX.4.4^9=122^35=D^34=215^49=CLIENT12^52=20100225-19:41:57.316^56=B^1=Marcel^11=13346^21=1^40=2^44=5^54=1^59=0^60=20100225-19:39:52.020^10=072^

or

8=FIX.4.4|9=122|35=D|34=215|49=CLIENT12|52=20100225-19:41:57.316|56=B|1=Marcel|11=13346|21=1|40=2|44=5|54=1|59=0|60=20100225-19:39:52.020|10=072|

ดังนั้นความแตกต่างในการใช้ ^ บน | คืออะไร

มีตัวคั่นอื่นใช้เช่นกัน ยังไม่ชัดเจนว่าทำไม [SOH] (0x01) จึงเหมาะกับ ^ หรือ |

มันอาจเป็นตัวเลข ONE


person Ashley    schedule 13.08.2014    source แหล่งที่มา


คำตอบ (3)


ตัวคั่น SOH = รหัส ASCII 01 เป็นอักขระที่ไม่สามารถพิมพ์ได้ เมื่อพิจารณาการแสดงข้อความแบบไบนารี (เช่น ในมุมมองตัวแก้ไขฐานสิบหก) คุณจะเห็นอักขระเป็น 0x01 ในการแสดงข้อความ ดูเหมือนว่าบางคนใช้ | และอย่างอื่นใช้ ^ ซึ่งเป็นอักขระที่ไม่ค่อยได้ใช้และเป็นตัวคั่นที่ดี

person MP24    schedule 13.08.2014
comment
ดังนั้น นี่หมายความว่าข้อความแก้ไขจริงบนสายไฟ/ซ็อกเก็ต/เครือข่ายจะไม่มี | หรืออักขระ ^ แต่มีเพียง 0x01 แต่เมื่อออกจากสายแล้ว 0x01 จะถูกแทนที่ด้วยหนึ่งใน | หรืออักขระ ^ ฉันอาจจะอยู่นอกเป้าหมายที่นี่ แต่ขอขอบคุณสำหรับความช่วยเหลือของคุณจริงๆ - person Ashley; 14.08.2014
comment
ใช่ โปรดดูที่ fixwiki.org/fixwiki/FPL:Tag_Value_Syntax สำหรับคำอธิบายของรูปแบบ เมื่อพิจารณาซอร์สโค้ดสำหรับการแก้ไขด่วน ก็ยังใช้ 0x01 เป็นตัวคั่นด้วย - person MP24; 14.08.2014
comment
อีกประเด็นหนึ่งที่ต้องเพิ่ม - ฉันมักจะเห็นข้อความ rax ในไฟล์บันทึก บน Linux SOH มักจะแสดงในเทอร์มินัลเป็นโค้ด Escape C ^A เช่น: 8=FIX.4.2^A9=207^A35=D^A43=N^A52=20140825-07:24:08 ^A122=20140825-07:24:08^อา... . - person Andy Lynch; 08.09.2014

การใช้อักขระ | มีไว้เพื่อความสะดวกในการมองเห็น อ่านง่ายกว่า ^A

cat your.file.fix | tr '\01' '|' | less

คุณสามารถแปลงคำสั่งข้างต้นเป็นเชลล์สคริปต์ที่กำหนดเองเพื่อเปิดไฟล์เซสชัน FIX ได้อย่างง่ายดาย

~/.bashrc

function fixlog {
  cat $* | tr '\01' '|' | less
}

จากนั้นก็ง่ายๆ

fixlog your.file.fix
person Julien    schedule 22.02.2019

ข้อความ FIX จะมีค่า 0x01 ระหว่างฟิลด์ในข้อความเสมอ ไม่ว่าจะอยู่บนสาย ใน OMS/EMS หรือในไฟล์บันทึก เฉพาะเมื่อต้องแสดงข้อความว่ามีการทดแทน (ตกลง บางคนอาจทำให้ไฟล์บันทึกของตนสะอาดและถอดเสียงอักขระ) มันไม่ใช่กรณีที่ข้อความ FIX ที่ถูกต้องจะมีไปป์หรือเครื่องหมายรูปหมวกแยกฟิลด์ เป็นกรณีที่ข้อความ FIX จะไม่มีที่ใดเลยนอกจากระหว่างฟิลด์ ( เป็นอักขระที่ไม่ควรปรากฏในข้อความที่พิมพ์ - ข้อความ FIX ควรอ่านได้ - และจะไม่ขัดแย้งกับการยกเลิกสตริง C ดังนั้นข้อความทั้งหมดจึงถือเป็นสตริงได้หากคุณโน้มเอียงมาก .)

person Mark Reece    schedule 26.07.2017