Ну, в принципе при записи через Write_Data в файл нули не отсекает - 
 Code
 
 #Include "window9.bi" 
 Dim As String str_0 = "aaa" & Chr(0) &Chr(0) &Chr(0) & "bbb" & Chr(0) 
 var byte_0 = @str_0 
 #Print TypeOf(byte_0) 
 ? "Test input ZERO: " & Chr(0)   
 ? str_0   
 ? Len(str_0)   
 ? *byte_0   
 ? Len(*byte_0) 
 *byte_0 += "ccc" & Chr(0) &Chr(0) &Chr(0) 
 Var handle1=Create_File("test1.txt") 
 If handle1 Then 
    Write_String(handle1,*byte_0) 
 EndIf 
 Close_file(handle1) 
 Var handle2=Create_File("test2.txt") 
 If handle1 Then 
    Write_Data(handle2,StrPtr(*byte_0),len(*byte_0)) 
 EndIf 
 Close_file(handle2) 
 Sleep : End 
 
 так что со String вполне можно работать, как с байтовым массивом, но вот как получить тогда нужный байт по срезу(например, для прохода в цикле)? 
 Code
 
 Dim As String str_0 = "aaa" & Chr(0) &Chr(0) &Chr(0) & "bbb" & Chr(0) 
 var pstr_0 = @str_0 
 ? str_0[1] 
 ? pstr_0[1] ' Peek(String,byte_0+1) ??? 
 Sleep : End